3

私のコードでは、次のいずれかが発生したときにスローするために、MSDN で宣言されProcess.Kill()ている呼び出しを行う必要があります。Win32Exception

  1. 関連するプロセスを終了できませんでした。
  2. プロセスは終了しています。
  3. 関連するプロセスは Win16 実行可能ファイルです。

MSDNによると、この組み合わせは、プロセスの終了中に が呼び出されたときに発生Win32ExceptionAccess is deniedます。他の 2 つのケースについては、そのような詳細は文書化されていません。NativeErrorCodeKill()

したがって、この状況を合理的に処理する必要があります。もちろん、キャッチすることはできますWin32Exceptionが、なぜそれが投げられたのか正確に知るにはどうすればよいでしょうか? プロセスがすでに終了している場合は何もする必要がなく、それ以外の場合は例外を再スローする可能性があります。

この特定のケースを特定して処理するにはどうすればよいですか?

4

2 に答える 2

0

try-catch を使用します。私に言わせれば、これは .NET フレームワークの設計エラーです。

または、PInvoke を使用して を呼び出しますTerminateProcess

于 2013-08-15T13:42:49.763 に答える