Замена параллельной библиотеки задач для BackgroundWorker?

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

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

Ответ 1

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

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

Ответ 2

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