ここからアプリケーションを閉じると、アクティブなすべてのBackgroundWorkersが停止しますか?そうではないようです。
しかし、ここからフォームのクロージングイベントでBackgroundWorkerを停止する方法は?はいのようです。
それで、それはどれですか?
(編集:BackgroundWorker
sが例外で終了する可能性があることを認識しています。しかし、それの問題は何ですか?リソースを消費する実行中のスレッドを残さないことがここでのポイントではありませんか?)
ここからアプリケーションを閉じると、アクティブなすべてのBackgroundWorkersが停止しますか?そうではないようです。
しかし、ここからフォームのクロージングイベントでBackgroundWorkerを停止する方法は?はいのようです。
それで、それはどれですか?
(編集:BackgroundWorker
sが例外で終了する可能性があることを認識しています。しかし、それの問題は何ですか?リソースを消費する実行中のスレッドを残さないことがここでのポイントではありませんか?)
を閉じても、そのフォームによって開始されたすべてのバックグラウンド ワーカーが停止するForm
わけではありません。
アプリケーション全体が終了すると、すべてのバックグラウンド スレッドが停止します。
メイン フォームを閉じると (別のMain
処理を行うようにメソッドを変更していない限り)、アプリケーション全体が終了します。
あなたが参照した各質問は、それが言っていることに対して正しいです。メイン フォームを閉じると、アプリケーション全体が終了し、バックグラウンド ワーカーが自動的に閉じられます。閉じているフォームがメイン フォームではなく、他のフォームであり、それを開始するバックグラウンド ワーカーを停止したい場合は、自分で行う必要があります。
また、提供した2 番目のリンクがもう少し複雑なものを求めていることにも注意してください。その投稿では、フォームを閉じると (メイン フォームの場合)、バックグラウンド スレッドの実行が停止することは明らかです。OPがそこでやろうとしているのは、バックグラウンドスレッドに「やあ、終わりの時間だ、ここで終わった」と伝え、そのバックグラウンドスレッドが物事をきれいに片付け終えるまでフォームを待たせることです。何かをしている最中に、スレッドを終了して強制的に中止します。
あなたが提供するこれらのリンクは両方とも正しい答えを持っています-BackgroundWorker
プログラムが閉じられると閉じられます。管理されていないリソースは、明示的に閉じることを心配する必要があるリソースです。