BackgroundWorker RunWorkerCompleted事件

我的C#应用​​程序有几个后台工作人员。有时,一名后台工作者会解雇另一名。当第一个后台工作人员完成并且RunWorkerCompleted事件被触发时,该事件将在哪个线程上触发,UI或从哪个线程RunWorkerAsync调用?我正在使用Microsoft

Visual C#2008 Express Edition。您可能有任何想法或建议。谢谢。

回答:

如果BackgroundWorker是从UI线程创建的,则RunWorkerCompleted事件还将在UI线程上引发。

如果是从后台线程创建的,则事件将在未定义的后台线程上引发(不一定是同一线程,除非您使用custom SynchronizationContext)。

有趣的是,这似乎并没有在MSDN上得到充分记录。我能够找到的最佳参考是在这里:

在您的应用程序中实现多线程的首选方法是使用BackgroundWorker组件。的BackgroundWorker的组件使用一个事件驱动的模型为多线程。

您可以从ProgressChanged和RunWorkerCompleted事件处理程序中调用控件。

以上是 BackgroundWorker RunWorkerCompleted事件 的全部内容, 来源链接: utcz.com/qa/406106.html

回到顶部