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"有什么问题吗?
我想知道第二次尝试是否安全第二次尝试
是否有可能导致任何问题?
第二种方法是安全的,只要所有控件都与相同的UI线程相关联即可.这种情况几乎总是如此,但并非绝对必须如此.
实际上,您几乎肯定知道您的代码是否在不同的线程中创建不同的控件(因为这是一件非常不寻常的事情).如果你不知道自己在做什么,那就假设你不是,你的第二个表格应该没问题.
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |