Application.DispatcherUnhandledException Application.DispatcherUnhandledException Application.DispatcherUnhandledException Application.DispatcherUnhandledException Event

定義

アプリケーションによってスローされた例外が処理されないときに発生します。Occurs when an exception is thrown by an application but not handled.

public:
 event System::Windows::Threading::DispatcherUnhandledExceptionEventHandler ^ DispatcherUnhandledException;
public event System.Windows.Threading.DispatcherUnhandledExceptionEventHandler DispatcherUnhandledException;
member this.DispatcherUnhandledException : System.Windows.Threading.DispatcherUnhandledExceptionEventHandler 
Public Custom Event DispatcherUnhandledException As DispatcherUnhandledExceptionEventHandler 

次の例は、イベントを処理して未処理のDispatcherUnhandledException例外を処理する方法を示しています。The following example shows how to process unhandled exceptions by handling the DispatcherUnhandledException event.

using System.Windows;
using System.Windows.Threading;

namespace SDKSample
{
    public partial class App : Application
    {
        void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
        {
            // Process unhandled exception

            // Prevent default unhandled exception processing
            e.Handled = true;
        }
    }
}

Imports System.Windows
Imports System.Windows.Threading

Namespace SDKSample
	Partial Public Class App
		Inherits Application
		Private Sub App_DispatcherUnhandledException(ByVal sender As Object, ByVal e As DispatcherUnhandledExceptionEventArgs)
			' Process unhandled exception

			' Prevent default unhandled exception processing
			e.Handled = True
		End Sub
	End Class
End Namespace

注釈

既定では、Windows Presentation Foundation はハンドルされない例外をキャッチし、(例外を報告できる) ダイアログボックスから例外のユーザーに通知し、アプリケーションを自動的にシャットダウンします。By default, Windows Presentation Foundation catches unhandled exceptions, notifies users of the exception from a dialog box (from which they can report the exception), and automatically shuts down an application.

ただし、アプリケーションで、一元化された場所からカスタムのハンドルされない例外処理をDispatcherUnhandledException実行する必要がある場合は、を処理する必要があります。However, if an application needs to perform custom unhandled exception processing from a centralized location, you should handle DispatcherUnhandledException.

DispatcherUnhandledExceptionは、メイン UI Applicationスレッドで実行されているコードによって処理されない例外ごとに、によって発生します。DispatcherUnhandledException is raised by an Application for each exception that is unhandled by code running on the main UI thread.

バックグラウンド ui スレッド (独自Dispatcherのスレッド) またはバックグラウンドワーカースレッド (がDispatcherないスレッド) で例外が処理されない場合、例外はメイン ui スレッドに転送されません。If an exception is not handled on either a background UI thread (a thread with its own Dispatcher) or a background worker thread (a thread without a Dispatcher), the exception is not forwarded to the main UI thread. そのためDispatcherUnhandledException 、は発生しません。Consequently, DispatcherUnhandledException is not raised. このような状況では、次の操作を行うためのコードを記述する必要があります。In these circumstances, you will need to write code to do the following:

  1. バックグラウンドスレッドで例外を処理します。Handle exceptions on the background thread.

  2. これらの例外をメイン UI スレッドにディスパッチします。Dispatch those exceptions to the main UI thread.

  3. を生成できるDispatcherUnhandledExceptionように処理せずに、メイン UI スレッドでそれらを再スローします。Rethrow them on the main UI thread without handling them to allow DispatcherUnhandledException to be raised.

詳細については、「スレッドモデルの概要」を参照してください。For more information, see the Threading Model overview.

イベントDispatcherUnhandledExceptionハンドラーには、次DispatcherUnhandledExceptionEventArgsのような、例外に関するコンテキスト情報を含む引数が渡されます。The DispatcherUnhandledException event handler is passed a DispatcherUnhandledExceptionEventArgs argument that contains contextual information regarding the exception, including:

この情報を使用すると、例外が復旧可能かどうかを判断できます。You can use this information to determine whether an exception is recoverable or not. 回復可能な例外FileNotFoundExceptionは、などの場合がありますが、たとえば、回復不能な例外はである可能性StackOverflowExceptionがあります。A recoverable exception might be a FileNotFoundException, for example, while an unrecoverable exception might be a StackOverflowException, for example.

からDispatcherUnhandledException未処理の例外を処理し、処理WPFWPFを続行しない場合は、 Handledプロパティをにtrue設定する必要があります。When you process an unhandled exception from DispatcherUnhandledException, and you don't want WPFWPF to continue processing it, you need to set the Handled property to true.

によって発生するApplication他のDispatcherUnhandledExceptionイベントとは異なり、には、対応するプロテクト仮想実装 (OnDispatcherUnhandledException) がありません。Unlike the other events that Application raises, DispatcherUnhandledException does not have a matching protected virtual implementation (OnDispatcherUnhandledException). そのため、からApplication派生するクラスは、ハンドルされない例外を処理するために、常にでDispatcherUnhandledExceptionイベントハンドラーを登録する必要があります。Consequently, classes that derive from Application must always register an event handler with DispatcherUnhandledException to process unhandled exceptions.

適用対象