任务并行库替换BackgroundWorker?

任务并行库是否具有任何可以替代或改进BackgroundWorker类的东西?

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



Helenr
浏览 435回答 3
3回答

开心每一天1111

该Task下课的改善BackgroundWorker; 它自然支持嵌套(父/子任务),使用新的取消API,任务继续等。我的博客上有一个示例,展示了旧BackgroundWorker的做事方式和新Task的做事方式。我确实有一个小的帮助程序类,用于需要报告进度的任务,因为我觉得语法很尴尬。该示例涵盖了结果值,错误条件,取消和进度报告。

白衣染霜花

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

幕布斯6054654

您可以将任意对象传递为userState。但是,自从我上次发表评论以来的2.5年中,Task已经对IProgress<T>和进行了补充Progress<T>,它们比BackgroundWorker的过程更干净,更容易。在现代代码中,根本没有理由再使用BackgroundWorker。
打开App,查看更多内容
随时随地看视频慕课网APP