【问题标题】:how does BackgroundWorker work under the hood?BackgroundWorker 如何在幕后工作?
【发布时间】:2009-12-22 16:32:50
【问题描述】:

它如何知道何时在其 progresschanged 事件处理程序中编组对 UI 线程的调用?

我知道 SynchronizationContext.Current 可以解决问题,但是这个属性只在主 UI 线程中设置,如果在另一个后台线程上创建 backgroundworker 怎么办?

谁能解释一下?

【问题讨论】:

    标签: c# backgroundworker


    【解决方案1】:

    根据反射器,从 UI 线程调用的 BackgroundWorker.RunWorkAsync 使用 AsyncOperationManager.CreateOperation。

    此方法访问 SynchronizationContext.Current(如果不存在,则创建一个新方法)。

    所以在启动BGW时会保存SynchronizationContext。

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 2011-02-17
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多