Windowsフォームアプリで使用するバックグラウンドスレッドの実装の選択について、文体上の質問があります。現在、私はBackgroundWorker
無限(while(true))
ループを持つフォームを持っています。このループではWaitHandle.WaitAny
、関心のあることが発生するまでスレッドをスヌーズし続けるために使用します。待機しているイベントハンドルの1つは「StopThread
」イベントです。これにより、ループを抜けることができます。このイベントは、オーバーライドされたときに通知されForm.Dispose()
ます。
BackgroundWorker
ファイルをダウンロードしたり、一連のアイテムを処理したりするなど、UIと結び付けたくなくて限りのない操作を意図した場所で読んだことがあります。この場合、「終了」は不明であり、ウィンドウが閉じている場合のみです。したがってBackgroundWorker
、この目的ではなくバックグラウンドスレッドを使用する方が適切でしょうか?