0

以下のコードを実行しているときに ExecutionEngineException がキャッチされない理由が気になります。

try                            
{
   ((Window)window).Close();
}
catch (Exception e)
{
   Console.WriteLine(e);
}

WriteLine に到達することはありません。この例外をキャッチする方法はありますか?

注: DockablePanes の 1 つが AutoHide モードで、表示されていて、ユーザーが wpf ウィンドウを閉じようとしているときに、AvalonDock によって例外がスローされることはわかっています。

更新:この例外に関する msdnのコメント セクションを読みました:

CLR は、マネージ コードがキャッチできるような方法でこの例外をスローすることはありません。

したがって、問題は、そのような後にアプリケーションをうまく閉じる方法です。

4

2 に答える 2

2

ExecutionEngineException、回復または処理を試みてはならない致命的なエラーを表します。問題が発生する前に、問題の原因に対処する必要があり、適切に処理しようとするのではありません。

問題の原因をすでに知っていると言うので、アプリケーションが致命的な例外を強制的にスローする状態にならないように対策を講じる必要があります。

于 2011-02-17T10:40:00.510 に答える
0

[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions()]コードが実行されるメソッドに属性を追加することを検討してください。

于 2011-07-18T10:23:30.897 に答える