Application.DispatcherUnhandledException Evento

Definición

Se produce cuando una aplicación inicia una excepción que no se controla.Occurs when an exception is thrown by an application but not handled.

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 

Ejemplos

En el ejemplo siguiente se muestra cómo procesar las excepciones no controladas mediante el control del evento DispatcherUnhandledException.The following example shows how to process unhandled exceptions by handling the DispatcherUnhandledException event.

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 las excepciones no controladas, notifica a los usuarios de la excepción desde un cuadro de diálogo (desde el que pueden notificar la excepción) y cierra automáticamente una aplicación.By default, Windows Presentation Foundation catches unhandled exceptions, notifies users of the exception from a dialog box (from which they can report the exception), and automatically shuts down an application.

Sin embargo, si una aplicación necesita realizar un procesamiento de excepciones no controladas personalizado desde una ubicación centralizada, debe controlar DispatcherUnhandledException.However, if an application needs to perform custom unhandled exception processing from a centralized location, you should handle DispatcherUnhandledException.

DispatcherUnhandledException genera un Application para cada excepción no controlada por el código que se ejecuta en el subproceso de la interfaz de usuario principal.DispatcherUnhandledException is raised by an Application for each exception that is unhandled by code running on the main UI thread.

Si no se controla una excepción en un subproceso de la interfaz de usuario en segundo plano (un subproceso con su propio Dispatcher) o en un subproceso de trabajo en segundo plano (un subproceso sin un Dispatcher), la excepción no se reenvía al subproceso de la interfaz de usuario principal.If an exception is not handled on either a background UI thread (a thread with its own Dispatcher) or a background worker thread (a thread without a Dispatcher), the exception is not forwarded to the main UI thread. Por consiguiente, no se produce DispatcherUnhandledException.Consequently, DispatcherUnhandledException is not raised. En estas circunstancias, tendrá que escribir código para hacer lo siguiente:In these circumstances, you will need to write code to do the following:

  1. Controle las excepciones en el subproceso en segundo plano.Handle exceptions on the background thread.

  2. Envíe esas excepciones al subproceso de la interfaz de usuario principal.Dispatch those exceptions to the main UI thread.

  3. Vuelva a producirlos en el subproceso de la interfaz de usuario principal sin controlarlos para permitir que se generen DispatcherUnhandledException.Rethrow them on the main UI thread without handling them to allow DispatcherUnhandledException to be raised.

Para obtener más información, vea la información general sobre el modelo de subprocesos .For more information, see the Threading Model overview.

Al controlador de eventos DispatcherUnhandledException se le pasa un argumento DispatcherUnhandledExceptionEventArgs que contiene información contextual relativa a la excepción, incluido:The DispatcherUnhandledException event handler is passed a DispatcherUnhandledExceptionEventArgs argument that contains contextual information regarding the exception, including:

Puede usar esta información para determinar si una excepción es recuperable o no.You can use this information to determine whether an exception is recoverable or not. Una excepción recuperable podría ser una FileNotFoundException, por ejemplo, mientras que una excepción irrecuperable podría ser una StackOverflowException, por ejemplo.A recoverable exception might be a FileNotFoundException, for example, while an unrecoverable exception might be a StackOverflowException, for example.

Al procesar una excepción no controlada desde DispatcherUnhandledExceptiony no desea que WPFWPF continúe procesando, debe establecer la propiedad Handled en true.When you process an unhandled exception from DispatcherUnhandledException, and you don't want WPFWPF to continue processing it, you need to set the Handled property to true.

A diferencia de otros eventos que genera Application, DispatcherUnhandledException no tiene una implementación virtual protegida coincidente (OnDispatcherUnhandledException).Unlike the other events that Application raises, DispatcherUnhandledException does not have a matching protected virtual implementation (OnDispatcherUnhandledException). Por lo tanto, las clases que derivan de Application siempre deben registrar un controlador de eventos con DispatcherUnhandledException para procesar las excepciones no controladas.Consequently, classes that derive from Application must always register an event handler with DispatcherUnhandledException to process unhandled exceptions.

Se aplica a