タスク並列ライブラリには、BackgroundWorkerクラスの置換または改善と見なされるものがありますか?
ウィザード形式のUIを備えたWinFormsアプリケーションがあり、長時間実行されるタスクがいくつかあります。標準の進行状況バーと操作をキャンセルする機能を備えたレスポンシブUIが必要です。 BackgroundWorkerを使用してこれを実行したことがありますが、代わりに使用できるTPLパターンがあるかどうか疑問に思っていますか?
Task
クラスはBackgroundWorker
;を改良したものです。ネスト(親/子タスク)を自然にサポートし、新しいキャンセルAPI、タスクの継続などを使用します。
私のブログに例があります 、古いBackgroundWorker
のやり方と新しいTask
のやり方を示しています。構文がやや扱いにくいので、進行状況を報告する必要があるタスク用の小さなヘルパークラスがあります。この例では、結果の値、エラー条件、キャンセル、進行状況のレポートを扱います。
バックグラウンドワーカーは、これを達成するための有効な方法です。複数の大規模な操作を同時に実行している場合は、並列拡張を検討する価値があります。