c#使用这个是安全的吗?Invoke?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#使用这个是安全的吗?Invoke?相关的知识,希望对你有一定的参考价值。
如果我想从另一个线程更新主线程中的主UI控件的值,请使用以下代码
第一次尝试 - 它有效
Label1.Invoke((MethodInvoker)(()=> Label1.Text = "label"));
button1.Invoke((MethodInvoker)(()=> button1.Text = "button"));
textBox1.Invoke((MethodInvoker)(()=> textBox1.Text = "textBox"));
第二次尝试 - 它有效
this.Invoke((MethodInvoker)(()=>
{
Label1.Text = "label";
button1.Text = "button";
textBox1.Text = "textBox";
}));
第二次尝试看起来很简单因为只需要写“this.Invoke” 第二次尝试访问主线程UI控件简单
使用2nd尝试“this.Invoke”有什么问题吗? 我想知道第二次尝试是否安全 第二次尝试是否有可能导致任何问题?
答案
第二种方法是安全的,只要所有控件都与相同的UI线程相关联即可。这种情况几乎总是如此,但并非绝对必须如此。
实际上,您几乎肯定知道您的代码是否在不同的线程中创建不同的控件(因为这是一件非常不寻常的事情)。如果你不知道自己在做什么,那就假设你不是,你的第二个表格应该没问题。
以上是关于c#使用这个是安全的吗?Invoke?的主要内容,如果未能解决你的问题,请参考以下文章
Parallel.Invoke 和 Parallel.ForEach 本质上是一样的吗?
java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段