タスク並列ライブラリには、BackgroundWorkerクラスの置き換えまたは改善と見なされるものがありますか?
ウィザードスタイルのUIを備えたWinFormsアプリケーションがあり、長時間実行されるタスクを実行します。標準のプログレスバーと操作をキャンセルする機能を備えたレスポンシブUIを使用できるようにしたいと考えています。以前にBackgroundWorkerでこれを実行しましたが、代わりに使用できるTPLパターンがいくつかあるかどうか疑問に思っています。
タスク並列ライブラリには、BackgroundWorkerクラスの置き換えまたは改善と見なされるものがありますか?
ウィザードスタイルのUIを備えたWinFormsアプリケーションがあり、長時間実行されるタスクを実行します。標準のプログレスバーと操作をキャンセルする機能を備えたレスポンシブUIを使用できるようにしたいと考えています。以前にBackgroundWorkerでこれを実行しましたが、代わりに使用できるTPLパターンがいくつかあるかどうか疑問に思っています。
回答:
BackgroundWorker
をTask
許可しながら、進行状況のレポートが簡単になります。2つのうち、私は好みますTask
(ネストを許可するよりも、進行状況レポートをクリーンアップする方がはるかに簡単です)。ただし、どちらも他の一般的なソリューションよりもはるかに進んでいます。Thread
またはを使用している人の話を聞くと、私はしわがれThreadPool.QueueUserWorkItem
ます。これらは、バックグラウンドタスクに正しく使用するのが絶対に最も困難です。
userState
。として渡すことができます。ただし、前回のコメントから2。5年間で、とTask
が追加されました。これらは、の進行よりもクリーンで簡単です。最近のコードでは、もう使用する理由はまったくありません。IProgress<T>
Progress<T>
BackgroundWorker
BackgroundWorker