私はIsBackgroundプロパティをtrueに設定したC#でスレッドを使用しています。スレッドは、アプリケーションが終了するまでループ内でコードを実行しています。アプリケーションが閉じられると、スレッドも実行を停止します(IsBackground = trueに設定されているため)。アプリケーションが終了したときに、バックグラウンドスレッドがアプリケーションによって強制終了されたことを検出できますか?
どのようにアプリケーションがスレッドを強制終了しますか?私はThreadAbortExceptionを取得していないので、中断を呼び出すことでそれをしないようです。背後で起こるのだろうか?私はループの私の最終的なブロックでいくつかのロールバックをしたいと思います。
スレッドで自分自身を中止することはできますが、アプリケーションがバックグラウンドスレッドをどのように閉じるのか、スレッド内から反応できるかどうかを知りたいと思っています。私はApplication.ApplicationExitイベントを購読することができますが、サービスとwinformの両方でこのコードを実行しています。ループ内で例外をキャッチしてfinallyステートメントでロールバックできるようにしたいと思います。
フォアグラウンドスレッドにして、スレッドを手動で閉じる「グローバル」アプリケーションシャットダウンシナリオを作成できます。 – CodingBarfield
[AppDomain.ProcessExit](http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx)イベントを見ましたか? – Botz3000
こういうふうに、このようなカスタムソリューションを作る以外に、私はそれが場面の裏で起こっていると言っています。 –