現在、私の C# .net アプリケーションは次のことを行っています (とりわけ):
- 特定のポートでソケットを開き、命令を待つスレッドを作成します。
- メッセージが着信すると、ソケット スレッドがメッセージを読み取り、イベントを発生させます。
- イベント ハンドラーは、必要な関数を呼び出してメッセージを解析し、アプリケーションの起動などの必要なアクションを実行します。
- 指定された外部「アプリケーション」が非同期で起動します。
アプリケーションが再起動しても、外部アプリケーションが閉じない場合、ソケットが閉じないようです。その後、そのポートで再度通信を開始しようとすると、エラーが発生します。ただし、外部アプリケーションを閉じるとすぐに、そのポートでソケットを開くことができます。
プログラムが正しく終了していないようです。終了時にソケットを強制終了する必要がありますが、外部プロセスが実行されている場合、そのソケットは決して閉じません。
何か案は?