Application.DispatcherUnhandledException Ereignis

Definition

Tritt auf, wenn durch eine Anwendung eine Ausnahme ausgelöst wird, die jedoch nicht behandelt wird.

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 

Ereignistyp

Beispiele

Das folgende Beispiel zeigt, wie nicht behandelte Ausnahmen verarbeitet werden, indem das DispatcherUnhandledException Ereignis behandelt wird.

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

Hinweise

Standardmäßig fängt Windows Presentation Foundation unbehandelte Ausnahmen ab, benachrichtigt Benutzer über die Ausnahme aus einem Dialogfeld (aus dem sie die Ausnahme melden können) und fährt automatisch eine Anwendung herunter.

Wenn eine Anwendung jedoch eine benutzerdefinierte unbehandelte Ausnahmeverarbeitung an einem zentralen Speicherort ausführen muss, sollten Sie behandeln DispatcherUnhandledException.

DispatcherUnhandledExceptionwird durch eine Application für jede Ausnahme ausgelöst, die nicht von Code behandelt wird, der auf dem Standard UI-Thread ausgeführt wird.

Wenn eine Ausnahme weder für einen Hintergrund-UI-Thread (ein Thread mit eigenem DispatcherThread) noch für einen Hintergrundarbeitsthread (ein Thread ohne einenDispatcher) behandelt wird, wird die Ausnahme nicht an den Standard UI-Thread weitergeleitet. DispatcherUnhandledException Folglich wird nicht angesprochen. Unter diesen Umständen müssen Sie Code schreiben, um Folgendes zu tun:

  1. Behandeln sie Ausnahmen für den Hintergrundthread.

  2. Senden Sie diese Ausnahmen an den Standard-Ui-Thread.

  3. Führen Sie sie im Standard UI-Thread erneut aus, ohne sie zu behandeln, damit DispatcherUnhandledException sie ausgelöst werden können.

Weitere Informationen finden Sie in der Übersicht über das Threadingmodell .

Dem DispatcherUnhandledException Ereignishandler wird ein DispatcherUnhandledExceptionEventArgs Argument übergeben, das kontextbezogene Informationen zur Ausnahme enthält, einschließlich:

Sie können diese Informationen verwenden, um zu bestimmen, ob eine Ausnahme wiederhergestellt werden kann oder nicht. Eine behebbare Ausnahme ist möglicherweise eine FileNotFoundException, z. B. während eine nicht behebbare Ausnahme ist ein StackOverflowException, z. B.

Wenn Sie eine nicht behandelte Ausnahme von DispatcherUnhandledExceptionverarbeiten und nicht möchten, dass WPF sie weiter verarbeitet, müssen Sie die Handled -Eigenschaft auf truefestlegen.

Im Gegensatz zu den anderen Ereignissen, die Application ausgelöst werden, DispatcherUnhandledException verfügt nicht über eine übereinstimmende geschützte virtuelle Implementierung (OnDispatcherUnhandledException). Daher müssen Klassen, die von abgeleitet werden Application , immer einen Ereignishandler registrieren, um DispatcherUnhandledException nicht behandelte Ausnahmen zu verarbeiten.

Gilt für: