您好,我正在使用C#开发应用程序。目前我在处理线程,有一个问题一直萦绕在我的脑海中。 Invoke和BeginInvoke有什么区别? 我阅读了一些帖子,在这里找到了一些有用的信息:here
但是在以下代码中,Invoke和BeginInvoke有什么区别:
private void ProcessRoutine()
{
for (int nValue = StartFrom; nValue <= EndTo; nValue++)
{
this.Invoke(this.MyDelegate, nValue);
//this.BeginInvoke(this.MyDelegate, nValue);
}
MessageBox.Show("Counting complete!");
}
private void MessageHandler(int progress)
{
lblStatus.Text = lblStatus.Text = "Processing item: " + progress.ToString();
progressBar1.Value = progress;
}
其中MyDelegate是指向MessageHandler函数的引用。
我注意到使用BeginInvoke时,lblStatus.Text没有刷新,而使用Invoke会刷新标签。此外,我知道Invoke会等待其执行完成。我最感兴趣的情况是为什么在这种情况下刷新标签文本会有差异。