任务并行库是否有任何可以被视为对BackgroundWorker类的替换或改进?
我有一个带有向导式UI的WinForms应用程序,它执行一些长时间运行的任务。我希望能够使用标准进度条和取消操作的响应式UI。我之前用BackgroundWorker做过这个,但是我想知道是否有一些TPL模式可以替代使用?
答案 0 :(得分:89)
Task
课程比BackgroundWorker
课程有所改进;它自然支持嵌套(父/子任务),使用新的取消API,任务延续等。
I have an example on my blog,展示了旧的BackgroundWorker
做事方式和新的Task
做事方式。对于需要报告进度的任务,我确实有一个小助手类,因为我发现语法相当笨拙。该示例涵盖结果值,错误条件,取消和进度报告。
答案 1 :(得分:23)
后台工作者仍然是实现这一目标的有效方法 - 如果你同时运行多个大型操作,那么并行扩展将值得考虑,如果只是那个,那么我会坚持使用后台工作者。