不是很明白,为什么程序每次执行到下面这里也就完了?

#region 线程安全UI操作代码
private delegate void SetStatusDelegate(string status);
private SetStatusDelegate setStatusDelegate; // 赋值在构造函数里 private void SetStatus(string status)
{
if (InvokeRequired)
{
Invoke(setStatusDelegate, new object[] { status });
//this.BeginInvoke(new MethodInvoker(delegate { statusBar1.Text = status; }));
}
else
statusBar1.Text = status;
}麻烦哪位达人帮我解释逐句解释下呢。特别是Invoke(setStatusDelegate, new object[] { status });这句,我不明白,程序每次执行到这里也就完了。百思不得其解啊

慕容708150
浏览 120回答 1
1回答

繁星点点滴滴

新的线程中,我们需要与UI进行交互,在.net中不允许我们直接这样做,在子线程中,调用到控件的话,编译器会认为是不安全的的。Windows 窗体中的控件被绑定到特定的线程,不具备线程安全性。因此,如果从另一个线程调用控件的方法,那么必须使用控件的一个 Invoke 方法来将调用封送到适当的线程。Invoke 生成同步方法调用;BeginInvoke 生成异步方法调用。注意BeginInvoke前面的对象是this,也就是主线程。他们作用是差不多的,只是同步与异步的区别。
打开App,查看更多内容
随时随地看视频慕课网APP