2

AppDomain.UnhandlerExceptionsに接続し、アプリケーション内の未処理の例外をリッスンするC#アプリケーションがあります。未処理の例外が発生すると、ユーザーにエラーメッセージが表示され、Environment.FailFastの呼び出しを介してアプリケーションが強制終了されます。

問題は、一部のマシンでは、これにより「不明なハードエラー」メッセージがユーザーに表示され、「OK」をクリックするまでアプリケーションが終了しないことです。

OSは、.NET4アプリケーションを搭載したWindows7x64です。

4

2 に答える 2

5

Microsoftに連絡したところ、WindowsマシンでWindowsエラー報告サービスが無効になっていることが原因であることが判明しました。

コールフローは次のようになります。

  1. アプリケーションは、Environment.FailFastを呼び出して自己終了します。
  2. CLRは、例外を処理するためにデバッガーが登録されているかどうかを確認します。デバッガーが登録されている場合、例外はデバッガーによって処理されます。
  3. デバッガーがない場合、CLRは例外をOSに渡そうとします。Windowsエラー報告サービスを開始し、例外を渡そうとします。
  4. Windowsエラー報告サービスの開始に失敗した場合、カーネルで不明なハードエラーをキューに入れ、不明なハードエラーメッセージがユーザーに表示されます。
于 2012-11-09T19:48:29.183 に答える