c#使用这个是安全的吗?Invoke?

1 c# delegates invoke thread-safety

如果我想从另一个线程更新主线程中的主UI控件的值,请使用以下代码

第一次尝试 - 它有效

Label1.Invoke((MethodInvoker)(()=> Label1.Text = "label"));  
button1.Invoke((MethodInvoker)(()=> button1.Text = "button")); 
textBox1.Invoke((MethodInvoker)(()=> textBox1.Text = "textBox"));  
Run Code Online (Sandbox Code Playgroud)

第二次尝试 - 它有效

this.Invoke((MethodInvoker)(()=> 
{
    Label1.Text = "label";  
    button1.Text = "button";
    textBox1.Text = "textBox";
}));  
Run Code Online (Sandbox Code Playgroud)

第二次尝试看起来很简单,因为只需要编写"this.Invoke"
第二次尝试访问主线程UI控件简单

使用2nd尝试"this.Invoke"有什么问题吗?
我想知道第二次尝试是否安全第二次尝试
是否有可能导致任何问题?

Jon*_*eet 5

第二种方法是安全的,只要所有控件都与相同的UI线程相关联即可.这种情况几乎总是如此,但并非绝对必须如此.

实际上,您几乎肯定知道您的代码是否在不同的线程中创建不同的控件(因为这是一件非常不寻常的事情).如果你不知道自己在做什么,那就假设你不是,你的第二个表格应该没问题.