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 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:
Behandeln sie Ausnahmen für den Hintergrundthread.
Senden Sie diese Ausnahmen an den Standard-Ui-Thread.
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:
Die Ausnahme (Exception).
Die Dispatcher , von der sie stammt (Dispatcher).
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 true
festlegen.
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.