未処理の例外ハンドラーがあります。それは素晴らしいGUIを示し、ユーザーがエラーレポートを送信できるようにします。ユーザーは自分の名前や電話番号などを残すこともでき、サポート部門から折り返し電話があります。うまく機能し、見栄えが良く、顧客の怒りを和らげます。理論的には、とにかく。
問題は、私のアプリケーションがバックグラウンドスレッドを使用していて、たとえばGUIスレッド(理にかなっている)などで例外がスローされてもスレッドが気にしないようで、作業を続行することです。その結果、ユーザーがカスタム例外ハンドラウィンドウを十分に長く開いたままにすると、WERダイアログがポップアップ表示され、エラーハンドラ自体がクラッシュしたように見えます。
例外ハンドラのスコープ内のスレッドオブジェクトにアクセスできないため、それらを一時停止できません。スレッドオブジェクトをグローバルにアクセス可能にすることも解決策ではありません。今のところ私の回避策はGlobals.Crashed = true;
、例外ハンドラーのようなものを使用し、ループの反復ごとにスレッドメソッドにそのプロパティをチェックさせることです。完璧ではありませんが、ダメージを最小限に抑えます。
ハッキーでない方法を知っている人はいますか?私のアプローチは間違っていますか?WERと同じように実行し、メインプログラムを一時停止してエラーUIを表示する外部プログラムを起動する必要がありますか?