为了账号安全,请及时绑定邮箱和手机立即绑定

任务并行库替换BackgroundWorker?

任务并行库替换BackgroundWorker?

C#
Helenr 2019-12-12 14:47:34
任务并行库是否具有任何可以替代或改进BackgroundWorker类的东西?我有一个带有向导式UI的WinForms应用程序,它执行了一些长期运行的任务。我希望能够拥有一个带有标准进度条的响应式UI,并能够取消该操作。我之前使用BackgroundWorker进行过此操作,但我想知道是否可以使用某些TPL模式来代替?
查看完整描述

3 回答

?
开心每一天1111

TA贡献1836条经验 获得超12个赞

该Task下课的改善BackgroundWorker; 它自然支持嵌套(父/子任务),使用新的取消API,任务继续等。


我的博客上有一个示例,展示了旧BackgroundWorker的做事方式和新Task的做事方式。我确实有一个小的帮助程序类,用于需要报告进度的任务,因为我觉得语法很尴尬。该示例涵盖了结果值,错误条件,取消和进度报告。


查看完整回答
反对 回复 2019-12-12
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

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


查看完整回答
反对 回复 2019-12-12
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

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

查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 434 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信