アプリに奇妙なエラーがあります。単一のバックグラウンドスレッドと複数の通常のスレッドがあります。アプリケーションを閉じると、すべての通常のスレッドが最終的に終了しますが、バックグラウンドのスレッドは引き続き機能します。
並列スタックをチェックインしましたが、バックグラウンドスレッドだけが機能しています。
アプリケーションが終了しているかどうかを確認して、内部からバックグラウンドスレッドを終了できるようにするにはどうすればよいですか?
アプリに奇妙なエラーがあります。単一のバックグラウンドスレッドと複数の通常のスレッドがあります。アプリケーションを閉じると、すべての通常のスレッドが最終的に終了しますが、バックグラウンドのスレッドは引き続き機能します。
並列スタックをチェックインしましたが、バックグラウンドスレッドだけが機能しています。
アプリケーションが終了しているかどうかを確認して、内部からバックグラウンドスレッドを終了できるようにするにはどうすればよいですか?
アプリケーションにバックグラウンドスレッドへの参照がある場合は、アプリケーションのthread.Abort()
終了時にメソッドを呼び出します。
使用するフレームワークに応じて、他のオプションがあります。たとえば、WPFでは、バックグラウンドスレッドがApplication.Exit
イベントを処理する場合があります。
new Thread(new ThreadStart(() =>
{
var thread = Thread.CurrentThread;
Dispatcher.Invoke((Action)delegate
{
Exit += (obj, args) => thread.Abort();
});
while (true) ; // background thread is always busy
})).Start();