【发布时间】:2009-03-22 03:50:31
【问题描述】:
BackgroundWorker 控件的已完成事件是否返回到 GUI 线程上,还是我必须将其编组返回。
另外,进度事件会在 GUI 线程上返回还是我必须将其编组返回?
【问题讨论】:
标签: c# multithreading background
BackgroundWorker 控件的已完成事件是否返回到 GUI 线程上,还是我必须将其编组返回。
另外,进度事件会在 GUI 线程上返回还是我必须将其编组返回?
【问题讨论】:
标签: c# multithreading background
这两个事件都将被编组到 UI 线程。
【讨论】:
所有事件都将返回到创建 BackgroundWorker 实例的线程上。您的客户所要做的就是监听事件。
您可能来过这里,但另请参阅:BackgroundWorker Events
【讨论】:
它将在发起操作的 UI 线程上引发。在后台,BackgroundWorker 使用SynchronizationContext 在两个线程之间进行封送处理。 WPF 和 WinForms 都会在启动时安装适当的 SynchronizationContext。
【讨论】:
如果 BackgroundWorker 是从 UI 线程创建的,那么这两个事件也将在 UI 线程上引发。
如果它是从后台线程创建的,则该事件将在未定义的后台线程上引发。
有关更多信息,请参阅此帖子和此连接问题。
【讨论】: