私は、アプリケーションと外部サービスとの間の接続を管理するサーバーアプリケーション内にコンポーネントを構築しています。私のコンポーネントは、サーバーが利用できなくなったことを検出し、サービスが利用可能になるまでバックグラウンドスレッドを開始し、「稼働中」の状態に再び入ります。アプリケーションのクローズを検出するにはどうすればよいですか?
私の問題は、このスレッドの実行中にコンポーネントを呼び出すプロセスが終了すると、アプリケーションはスレッドが終了するまで終了しないということです。基本的に、このサービスが利用可能な場合、私のアプリケーションはシャットダウンできません。
私の質問:アプリケーションが終了しようとすると、バックグラウンドスレッドが終了できるかどうかを検出する方法はありますか?私はAppDomainクラスのいくつかのイベントに気づいたことがありますが、どの条件とどの環境でそれらが解雇されるかはわかりません。
これは低レベルのコンポーネントなので、実行している環境について何も知りたくはありません。高レベルのコンポーネントがシャットダウンしていることを伝える必要はありません。
このコンポーネントは、WCFサービスとWindowsサービスアプリケーションの両方で使用されます。また、WinFormクライアントアプリケーションからテストを行っています。