任务并行库replace为BackgroundWorker?
任务并行库是否有什么可以被认为是对BackgroundWorker类的替代或改进?
我有一个向导式UI的WinForms应用程序,它执行一些长时间运行的任务。 我希望能够有一个标准的进度条响应式的用户界面和取消操作的能力。 我之前用BackgroundWorker做过这个,但是我想知道是否有一些TPL模式可以用来代替?
Task
类是对BackgroundWorker
的改进; 它自然支持嵌套(父/子任务),使用新的取消API,任务延续等。
我在我的博客上有一个例子 ,展示了旧的BackgroundWorker
做事情的方式和新的Task
方式。 对于需要报告进度的任务,我有一个小的帮助类,因为我觉得语法比较笨拙。 该示例涵盖了结果值,错误条件,取消和进度报告。
后台工作者仍然是实现这一目标的有效方式 – 如果您正在同时运行多个大型操作,那么并行扩展将值得考虑,如果它只是一个,那么我会坚持后台工作。