如果要从另一个线程更新主线程中主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”
第二个Try访问简单地访问主线程UI控件
使用第二次尝试“ this.invoke”是否有问题?
我不知道第二次尝试是否安全
第二次尝试是否有可能引起任何问题?
答案 0 :(得分:5)
第二种方法是安全的,只要所有控件都与同一UI线程相关联即可。 几乎总是情况,但并非绝对具有情况。
实际上,您几乎可以确定您的代码 是否在不同的线程中创建不同的控件(因为这是非常不寻常的事情)。如果您不知道自己在做什么,请暂时假设自己不在,并且第二种形式应该没问题。