Задача параллельной замены библиотеки для BackgroundWorker? - PullRequest
82 голосов
/ 18 августа 2010

Есть ли в библиотеке параллельных задач что-либо, что можно считать заменой или улучшением по сравнению с классом BackgroundWorker?

У меня есть приложение WinForms с пользовательским интерфейсом в стиле мастера, и оно выполняет некоторые длительные задачи.Я хочу иметь отзывчивый пользовательский интерфейс со стандартным индикатором выполнения и возможностью отмены операции.Я делал это раньше с BackgroundWorker, но мне интересно, есть ли какие-нибудь шаблоны TPL, которые можно использовать вместо этого?

Ответы [ 2 ]

90 голосов
/ 18 августа 2010

Класс Task является улучшением по сравнению с BackgroundWorker; он естественно поддерживает вложение (родительские / дочерние задачи), использует новый API отмены, продолжения задач и т. д.

У меня есть пример в моем блоге , показывающий старый BackgroundWorker способ ведения дел и новый Task способ ведения дел. У меня есть небольшой вспомогательный класс для задач, которые должны сообщать о прогрессе, потому что я нахожу синтаксис довольно неловким. Пример охватывает значения результатов, условия ошибок, отмены и отчеты о ходе выполнения.

23 голосов
/ 18 августа 2010

Фоновый рабочий по-прежнему является верным способом достижения этой цели - если вы выполняете несколько крупных операций одновременно, тогда стоит рассмотреть параллельные расширения, если бы это было только одно, то я бы придерживался фонового рабочего.

...