Application.DispatcherUnhandledException Événement
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Se produit lorsqu'une exception est levée par une application mais non gérée.
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
Type d'événement
Exemples
L’exemple suivant montre comment traiter les exceptions non gérées en gérant l’événement 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
Remarques
Par défaut, Windows Presentation Foundation intercepte les exceptions non gérées, avertit les utilisateurs de l’exception à partir d’une boîte de dialogue (à partir de laquelle ils peuvent signaler l’exception) et arrête automatiquement une application.
Toutefois, si une application doit effectuer un traitement d’exception personnalisé non géré à partir d’un emplacement centralisé, vous devez gérer DispatcherUnhandledException.
DispatcherUnhandledExceptionest déclenché par un Application pour chaque exception non gérée par le code en cours d’exécution sur le thread d’interface utilisateur main.
Si une exception n’est pas gérée sur un thread d’interface utilisateur d’arrière-plan (un thread avec son propre Dispatcher) ou sur un thread de travail en arrière-plan (un thread sans Dispatcher), l’exception n’est pas transférée au thread d’interface utilisateur main. Par conséquent, DispatcherUnhandledException n’est pas soulevé. Dans ces circonstances, vous devez écrire du code pour effectuer les opérations suivantes :
Gérer les exceptions sur le thread d’arrière-plan.
Distribuez ces exceptions au thread d’interface utilisateur main.
Relancez-les sur le thread d’interface utilisateur main sans les gérer pour permettre DispatcherUnhandledException leur levée.
Pour plus d’informations, consultez vue d’ensemble du modèle de thread.
Le DispatcherUnhandledException gestionnaire d’événements se fait passer un DispatcherUnhandledExceptionEventArgs argument qui contient des informations contextuelles concernant l’exception, notamment :
Exception (Exception).
d’où Dispatcher il provient (Dispatcher).
Vous pouvez utiliser ces informations pour déterminer si une exception est récupérable ou non. Une exception récupérable peut être un FileNotFoundException, par exemple, tandis qu’une exception irrécupérable peut être un StackOverflowException, par exemple.
Lorsque vous traitez une exception non gérée de DispatcherUnhandledExceptionet que vous ne souhaitez pas que WPF continue à la traiter, vous devez définir la propriété sur true
Handled .
Contrairement aux autres événements qui Application se déclenchent, DispatcherUnhandledException n’a pas d’implémentation virtuelle protégée correspondante (OnDispatcherUnhandledException). Par conséquent, les classes qui dérivent de Application doivent toujours inscrire un gestionnaire d’événements avec DispatcherUnhandledException pour traiter les exceptions non gérées.