BackgroundWorker的任务并行库替换?

时间:2010-08-18 14:56:53

标签: c# winforms backgroundworker task-parallel-library

任务并行库是否有任何可以被视为对BackgroundWorker类的替换或改进?

我有一个带有向导式UI的WinForms应用程序,它执行一些长时间运行的任务。我希望能够使用标准进度条和取消操作的响应式UI。我之前用BackgroundWorker做过这个,但是我想知道是否有一些TPL模式可以替代使用?

2 个答案:

答案 0 :(得分:89)

Task课程比BackgroundWorker课程有所改进;它自然支持嵌套(父/子任务),使用新的取消API,任务延续等。

I have an example on my blog,展示了旧的BackgroundWorker做事方式和新的Task做事方式。对于需要报告进度的任务,我确实有一个小助手类,因为我发现语法相当笨拙。该示例涵盖结果值,错误条件,取消和进度报告。

答案 1 :(得分:23)

后台工作者仍然是实现这一目标的有效方法 - 如果你同时运行多个大型操作,那么并行扩展将值得考虑,如果只是那个,那么我会坚持使用后台工作者。