Application.DispatcherUnhandledException Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Se produce cuando una aplicación inicia una excepción que no se controla.
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
Tipo de evento
Ejemplos
En el ejemplo siguiente se muestra cómo procesar excepciones no controladas mediante el control del DispatcherUnhandledException evento.
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
Comentarios
De forma predeterminada, Windows Presentation Foundation detecta excepciones no controladas, notifica a los usuarios la excepción desde un cuadro de diálogo (desde el que pueden notificar la excepción) y cierra automáticamente una aplicación.
Sin embargo, si una aplicación necesita realizar un procesamiento de excepciones no controlado personalizado desde una ubicación centralizada, debe controlar DispatcherUnhandledException.
DispatcherUnhandledException se genera mediante una Application excepción para cada excepción no controlada por el código que se ejecuta en el subproceso principal de la interfaz de usuario.
Si una excepción no se controla en un subproceso de interfaz de usuario en segundo plano (un subproceso con su propio Dispatcher) o en un subproceso de trabajo en segundo plano (un subproceso sin Dispatcher), la excepción no se reenvía al subproceso principal de la interfaz de usuario. Por lo tanto, DispatcherUnhandledException no se genera. En estas circunstancias, deberá escribir código para hacer lo siguiente:
Controle las excepciones en el subproceso en segundo plano.
Envíe esas excepciones al subproceso principal de la interfaz de usuario.
Vuelva a iniciarlos en el subproceso principal de la interfaz de usuario sin controlarlos para permitir DispatcherUnhandledException que se generen.
Para obtener más información, consulte información general sobre el modelo de subprocesos .
El DispatcherUnhandledException controlador de eventos se pasa un DispatcherUnhandledExceptionEventArgs argumento que contiene información contextual sobre la excepción, entre las que se incluyen:
Excepción (Exception).
a partir del Dispatcher cual se originó (Dispatcher).
Puede usar esta información para determinar si una excepción es recuperable o no. Una excepción recuperable podría ser , FileNotFoundExceptionpor ejemplo, mientras que una excepción irrecuperable podría ser , StackOverflowExceptionpor ejemplo.
Al procesar una excepción no controlada desde DispatcherUnhandledExceptiony no desea que WPF continúe procesandola, debe establecer la Handled propiedad true
en .
A diferencia de los demás eventos que Application se generan, DispatcherUnhandledException no tiene una implementación virtual protegida coincidente (OnDispatcherUnhandledException). Por consiguiente, las clases que derivan de Application siempre deben registrar un controlador de eventos con DispatcherUnhandledException para procesar excepciones no controladas.