Stack Overflowのこのトピックには、すでにかなり良いスレッドがいくつかありますが、それらのいずれにも簡潔な答えは実際にはないようです。私のC#コンソールアプリケーション(Windowsサービスとして実行)はJavaプロセスを起動して管理(開始/停止/再起動)しますが、私の問題は、マシンにリモートでアクセスし、約20のJavaプロセスが開始されることを確認することです。
これは明らかに、ある時点でアプリケーションがクラッシュし、開始したJavaプロセスをシャットダウンしないという問題です。AppDomain.CurrentDomainに「UnhandledExceptionEventHandler」をフックし、そこからTerminateProcess()を呼び出します(アクティブなJavaプロセスをシャットダウンします)が、この問題は引き続き発生します。
私のアプリケーションには、メインスレッド、TCPサーバースレッド(非同期接続を受け入れる)、およびUDPサーバースレッドがあります。UnhandledExceptionの上にフックする必要があるものは他にありますか?
編集
また、コードにいくつかのTry / Catchブロックがあり、コンソールに書き込むだけで、これは表示されません。これらを削除してUnhandledExceptionによってキャッチされるようにするか、代わりにロガーを追加する必要がありますか?