多くの独立したコンポーネントが連携してタスクを実行し、すべてのコンポーネントが個別のハートビート スレッドを持つプロジェクトに取り組んでいます。このハートビート スレッドはフォアグラウンド スレッドです。
ハートビート スレッドが停止した場合に備えて、コンポーネントの正常なシャットダウンを有効にしたいと考えています。
さらに情報を追加しています...
たとえば....データベースと対話し、要求に基づいてデータを取得し、クライアント アプリケーションにデータを返す Request Monitor (サーバー コンポーネント) と呼ばれるコンポーネントがあります。このすべてのタスクは、プライマリ スレッドによって実行されます。
また、クライアント アプリケーションでサーバー コンポーネントの正常性をチェックしたいので、サーバー コンポーネントに登録されているクライアント アプリケーションにハートビート メッセージを送信する別のスレッドを作成しました。そのメッセージには、マシン名、プロセス ID などのサーバー情報しか含まれていません。これは、サーバーが稼働しており、着信要求に応答していることを意味するハートビート情報と見なされます。サーバー コンポーネントは、10 分ごとにこの情報を送信します。
このハートビート情報はフォアグラウンド スレッドであるため、このセカンダリ スレッドが停止すると、アプリケーション全体がシャットダウンします。
一部のリソースのクリーンアップ、すでに受信したリクエストの完了など、ハートビート スレッドが停止した場合に備えて、いくつかのタスクを実行したいと考えています。