1. ホーム
  2. c#

[解決済み] BackgroundWorkerの代替となるタスク並列ライブラリ?

2023-05-22 03:42:20

質問

タスク並列ライブラリには、BackgroundWorkerクラスの代替や改良となるようなものはあるのでしょうか?

私は、ウィザード形式の UI を持つ WinForms アプリケーションを持っており、それはいくつかの長時間実行するタスクを実行します。私は、標準のプログレス バーと操作をキャンセルする機能を備えた応答性の高い UI を持つことができるようにしたいと思っています。私はBackgroundWorkerで以前にこれを行ったことがありますが、代わりに使用できるいくつかのTPLパターンがあるかどうか疑問に思っています。

どのように解決するのですか?

この Task クラスは BackgroundWorker ネスト(親/子タスク)を自然にサポートし、新しいキャンセル API を使用し、タスクの継続などを行います。

私のブログで例を紹介しています を表示し、古い BackgroundWorker のやり方と、新しい Task の方法で行います。私はこの構文がかなり厄介だと思うので、進捗状況を報告する必要があるタスクのための小さなヘルパークラスを持っています。この例では、結果値、エラー条件、キャンセル、および進捗状況の報告を扱っています。