UnhandledExceptionHandler イベントにフックすることにより、C# アプリケーションに AppDomain レベルでグローバル エラー ハンドラーを追加しました。
私の問題は、この例外を処理しているにもかかわらず、「アプリが動作を停止しました」というポップアップが表示されることです。
これは正常な動作ですか?オフにできますか?または、実際にこのメッセージを表示することをお勧めしますか?
UnhandledExceptionHandler イベントにフックすることにより、C# アプリケーションに AppDomain レベルでグローバル エラー ハンドラーを追加しました。
私の問題は、この例外を処理しているにもかかわらず、「アプリが動作を停止しました」というポップアップが表示されることです。
これは正常な動作ですか?オフにできますか?または、実際にこのメッセージを表示することをお勧めしますか?
これは正常な動作ですか?
はい。考えてみてください。コードはどこから再開する必要がありますか?どのような状態ですか?
オフにすることはできますか?
プログラム内、つまりトップレベルコード内の適切なポイントで例外を処理することによってのみ。UnhandledExceptionHandlerは代替ではなく、不完全な処理のための診断ツールです。
または、実際にこのメッセージを表示することをお勧めしますか?
はい。そこに到着した例外をログに記録する必要がありますが、すでに制御を失っています。
その時点で、アプリの既存のインスタンスを復元することは不可能だと思います。MSDNにはそれに関する情報がなく、「アプリケーションの状態に関する十分な情報が利用できる場合は、後で回復するためにプログラムデータを保存するなど、他のアクションを実行することができます」と提案されています。(リンク)
回復できないのは理にかなっています。Unhandled ExceptionHandlerで例外をキャッチした場合、それはアプリケーションがその例外を処理できなかったことを意味します。そのため、発生したことをログに記録する(後の調査のため)か、ユーザーのデータを保存する最後のチャンスです。「未処理の」例外ハンドラーが例外を「処理」してアプリを回復する必要がある場合は、アーキテクチャの問題のように聞こえます。
アプリの新しいインスタンスを作成して回復してみませんか?(または再起動と回復機能を使用して)