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