Application.DispatcherUnhandledException Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt auf, wenn eine Ausnahme von einer Anwendung ausgelöst, aber 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 unbehandelte Ausnahmen verarbeitet werden, indem das Ereignis behandelt wird DispatcherUnhandledException .
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 beendet automatisch eine Anwendung.
Wenn eine Anwendung jedoch eine benutzerdefinierte, nicht behandelte Ausnahmeverarbeitung von einem zentralen Speicherort ausführen muss, sollten Sie dies behandeln DispatcherUnhandledException.
DispatcherUnhandledException wird von einer Application für jede Ausnahme ausgelöst, die von Code, der im Haupt-UI-Thread ausgeführt wird, nicht behandelt wird.
Wenn eine Ausnahme nicht auf einem Hintergrund-UI-Thread (einem Thread mit eigenem DispatcherThread) oder einem Hintergrundarbeitsthread (einem Thread ohne einen DispatcherThread) behandelt wird, wird die Ausnahme nicht an den Haupt-UI-Thread weitergeleitet. DispatcherUnhandledException Folglich wird nicht aufgeworfen. Unter diesen Umständen müssen Sie Code schreiben, um Folgendes auszuführen:
Behandeln von Ausnahmen im Hintergrundthread.
Verteilen Sie diese Ausnahmen an den Haupt-UI-Thread.
Rethrow them on the main UI thread without handling them to allow DispatcherUnhandledException to be raised.
Weitere Informationen finden Sie in der Übersicht über das Threadingmodell .
Der DispatcherUnhandledException Ereignishandler wird ein DispatcherUnhandledExceptionEventArgs Argument übergeben, das kontextbezogene Informationen zu der Ausnahme enthält, einschließlich:
Die Ausnahme (Exception).
Das Dispatcher , von dem sie stammt (Dispatcher).
Mithilfe dieser Informationen können Sie ermitteln, ob eine Ausnahme wiederhergestellt werden kann. Eine wiederherstellbare Ausnahme kann z. B. eine FileNotFoundExceptionwiederherstellbare Ausnahme sein, z. B. eine StackOverflowExceptionausnahme, die nicht wiederhergestellt werden kann.
Wenn Sie eine unbehandelte Ausnahme verarbeiten DispatcherUnhandledExceptionund WPF die Verarbeitung nicht fortsetzen soll, müssen Sie die Handled Eigenschaft auf true".
Im Gegensatz zu den anderen ausgelösten DispatcherUnhandledException Ereignissen Application verfügt nicht über eine übereinstimmende geschützte virtuelle Implementierung (OnDispatcherUnhandledException). Daher müssen Klassen, die von Application dieser abgeleitet werden, immer einen Ereignishandler DispatcherUnhandledException registrieren, um unbehandelte Ausnahmen zu verarbeiten.