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