【发布时间】:2013-08-02 12:13:48
【问题描述】:
我想实现以下结果 - UI 线程注册我的耗时操作的进度更改事件,然后运行方法“DoOperationAsync()”。然后该操作将报告进度更改,但是:必须在 UI 线程上调用该事件,我无法实现。事件触发,但是当我尝试更新 UI 时,我需要使用 Dispatcher,因为事件是从执行操作的线程触发的。我不觉得我的库应该强迫开发人员提前思考并在任何地方使用调度程序。
基本上我想做BackgroundWorker 所做的事情。 BackgroundWorker 如何在创建它的线程上触发 ProgressChanged 事件?
【问题讨论】:
-
不,您不需要将 Dispatcher 与后台工作人员 reportsprgress 一起使用。按照 MSDN 上的示例进行操作。
-
再次阅读问题 - 我没有使用 BackgroundWorker。
-
为什么不使用 BackgroundWorker?
-
BackgroundWorker使用AsyncOperation.Post方法在适当的线程上调用事件。
标签: c# .net multithreading