Замена параллельной библиотеки задач для BackgroundWorker?
Есть ли в параллельной библиотеке задач что-либо, что будет считаться заменой или улучшением над классом BackgroundWorker?
У меня есть приложение WinForms с пользовательским интерфейсом в стиле мастера, и он выполняет некоторые длительные задачи. Я хочу иметь адаптивный пользовательский интерфейс со стандартным индикатором выполнения и возможностью отменить операцию. Я сделал это раньше с BackgroundWorker, но мне интересно, есть ли некоторые шаблоны TPL, которые можно использовать вместо этого?
Ответы
Ответ 1
Класс Task
является улучшением по сравнению с BackgroundWorker
; он естественно поддерживает вложенность (родительские/дочерние задачи), использует новый API отмены, продолжения задачи и т.д.
У меня есть пример в моем блоге, показывающий старый способ BackgroundWorker
делать вещи и новый способ Task
делать вещи, У меня есть небольшой вспомогательный класс для задач, которые должны сообщать о прогрессе, потому что я считаю, что синтаксис довольно неудобен. В этом примере приведены значения результатов, условия ошибки, аннулирование и отчет о ходе выполнения.
Ответ 2
Фоновый работник по-прежнему является допустимым способом достижения этого - если вы одновременно выполняете несколько больших операций, то параллельные расширения заслуживают рассмотрения, если бы это было просто одно, то я бы придерживался фонового работника.