WPF グローバル例外ハンドラー [重複] 質問する

WPF グローバル例外ハンドラー [重複] 質問する

時々、再現できない状況で、WPF アプリケーションがメッセージなしでクラッシュすることがあります。アプリケーションはすぐに閉じます。

グローバル Try/Catch ブロックを実装するのに最適な場所はどこですか。少なくとも、「ご不便をおかけして申し訳ございません...」というメッセージ ボックスを実装する必要があります。

ベストアンサー1

未処理の例外はさまざまなレベルでトラップできます。

  1. AppDomain.CurrentDomain.UnhandledExceptionAppDomain 内のすべてのスレッドから。
  2. Dispatcher.UnhandledException特定の単一の UI ディスパッチャ スレッドから。
  3. Application.Current.DispatcherUnhandledExceptionWPF アプリケーションのメインUI ディスパッチャー スレッドから。
  4. TaskScheduler.UnobservedTaskException非同期操作にタスク スケジューラを使用する各 AppDomain 内から。

未処理の例外をどのレベルでトラップする必要があるかを検討する必要があります。

2 番目と 3 番目のどちらを選択するかは、複数の WPF スレッドを使用しているかどうかによって決まります。これはかなり特殊な状況であり、使用しているかどうか不明な場合は、使用していない可能性が高いです。

おすすめ記事