【发布时间】:2009-12-22 16:32:50
【问题描述】:
它如何知道何时在其 progresschanged 事件处理程序中编组对 UI 线程的调用?
我知道 SynchronizationContext.Current 可以解决问题,但是这个属性只在主 UI 线程中设置,如果在另一个后台线程上创建 backgroundworker 怎么办?
谁能解释一下?
【问题讨论】:
标签: c# backgroundworker
它如何知道何时在其 progresschanged 事件处理程序中编组对 UI 线程的调用?
我知道 SynchronizationContext.Current 可以解决问题,但是这个属性只在主 UI 线程中设置,如果在另一个后台线程上创建 backgroundworker 怎么办?
谁能解释一下?
【问题讨论】:
标签: c# backgroundworker
根据反射器,从 UI 线程调用的 BackgroundWorker.RunWorkAsync 使用 AsyncOperationManager.CreateOperation。
此方法访问 SynchronizationContext.Current(如果不存在,则创建一个新方法)。
所以在启动BGW时会保存SynchronizationContext。
【讨论】: