Application.DispatcherUnhandledException Event

定義

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

public event System.Windows.Threading.DispatcherUnhandledExceptionEventHandler DispatcherUnhandledException;

次の例では、処理することにより、未処理の例外を処理する方法を示しています、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

Imports Microsoft.VisualBasic
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;
        }
    }
}
			' 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 によって発生したが、Applicationメイン UI スレッドで実行されているコードで処理されない例外ごとにします。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. 処理することを許可することがなく、メイン UI スレッドで再スローDispatcherUnhandledExceptionが発生します。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.

適用対象