您好,我正在用 C# 开发一些应用程序。目前我正在处理线程,我有一个问题在我脑海中。Invoke 和 BeginInvoke 有什么区别?我阅读了一些帖子,并在这里找到了一些有用的信息:这里
但是,以下代码中的 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 等待其执行完成。我感兴趣的最重要的案例是为什么在这种情况下刷新标签文本会有所不同。