1. ホーム
  2. .net

[解決済み] BackgroundWorkerとバックグラウンドスレッドの比較

2022-04-22 14:16:57

質問

Windowsフォームアプリで使用すべきバックグラウンドスレッドの実装の選択について、スタイル上の質問があります。現在、私は BackgroundWorker を持つフォームに、無限大の (while(true)) をループさせます。このループの中で WaitHandle.WaitAny で、何か面白いことが起こるまで、スレッドをスヌーズさせておくのです。私が待機しているイベントハンドルの1つは、" StopThread ループから抜け出せるように、" イベントを発生させます。このイベントは、私のオーバーライドされた Form.Dispose() .

どこかで読んだのですが BackgroundWorker は、ファイルのダウンロードや一連のアイテムの処理など、UI を縛りたくなく、終了が明確な操作のために用意されたものです。この場合、quot;end" は不明で、ウィンドウが閉じられたときだけです。したがって、以下の代わりにバックグラウンド・スレッドを使用するのがより適切でしょうか? BackgroundWorker を使用することができますか?

解決方法は?

ご質問の内容からすると、あなたは BackgroundWorker を標準のThreadとして使用します。

その理由は BackgroundWorker は UI スレッドに縛られたくない場合に推奨されます。これは Win Forms 開発の際にいくつかの素晴らしいイベントを公開するからです。

のようなイベント RunWorkerCompleted を使用して、スレッドが必要なことを完了したときにシグナルを送ります。 ProgressChanged イベントを使用して、スレッドの進行状況についてGUIを更新します。

ということは、もし はありません。 を使用することで、標準的なスレッドを使用することに何の問題もないと思います。