Application.DispatcherUnhandledException Событие

Определение

Происходит при генерации приложением исключения, которое не обрабатывается.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 

Примеры

В следующем примере показано, как обрабатывать необработанные исключения, обрабатывая событие 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

Комментарии

По умолчанию Windows Presentation Foundation перехватывает необработанные исключения, уведомляет пользователей об исключении из диалогового окна (из которого они могут сообщить об исключении) и автоматически завершает работу приложения.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.

Однако если приложению требуется выполнить настраиваемую обработку необработанных исключений из централизованного расположения, следует обработать DispatcherUnhandledException.However, if an application needs to perform custom unhandled exception processing from a centralized location, you should handle DispatcherUnhandledException.

DispatcherUnhandledException вызывается Application для каждого исключения, которое не обрабатывается кодом, выполняемым в основном потоке пользовательского интерфейса.DispatcherUnhandledException is raised by an Application for each exception that is unhandled by code running on the main UI thread.

Если исключение не обрабатывается в фоновом потоке пользовательского интерфейса (поток со своим собственным Dispatcher) или фоновым рабочим потоком (потоком без Dispatcher), то исключение не пересылается в основной поток пользовательского интерфейса.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. Следовательно, DispatcherUnhandledException не вызывается.Consequently, DispatcherUnhandledException is not raised. В таких случаях необходимо написать код для следующих действий:In these circumstances, you will need to write code to do the following:

  1. Обрабатывайте исключения в фоновом потоке.Handle exceptions on the background thread.

  2. Отправьте эти исключения в основной поток пользовательского интерфейса.Dispatch those exceptions to the main UI thread.

  3. Вызывайте их в основном потоке пользовательского интерфейса, не обрабатывая их, чтобы разрешить DispatcherUnhandledException.Rethrow them on the main UI thread without handling them to allow DispatcherUnhandledException to be raised.

Дополнительные сведения см. в статье Общие сведения о потоковой модели .For more information, see the Threading Model overview.

Обработчику DispatcherUnhandledException событий передается DispatcherUnhandledExceptionEventArgs аргумент, который содержит контекстные сведения об исключении, в том числе:The DispatcherUnhandledException event handler is passed a DispatcherUnhandledExceptionEventArgs argument that contains contextual information regarding the exception, including:

Эти сведения можно использовать, чтобы определить, является ли исключение восстанавливаемым или нет.You can use this information to determine whether an exception is recoverable or not. Восстанавливаемым исключением может быть FileNotFoundException, например, в то время как неустранимое исключение может быть StackOverflowException, например.A recoverable exception might be a FileNotFoundException, for example, while an unrecoverable exception might be a StackOverflowException, for example.

При обработке необработанного исключения из DispatcherUnhandledExceptionи не нужно, чтобы WPFWPF продолжать его обработку, необходимо задать для свойства Handled значение 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.

В отличие от других событий, которые Application возникают, DispatcherUnhandledException не имеет соответствующей защищенной виртуальной реализации (Ондиспатчерунхандледексцептион).Unlike the other events that Application raises, DispatcherUnhandledException does not have a matching protected virtual implementation (OnDispatcherUnhandledException). Следовательно, классы, производные от Application, должны всегда регистрировать обработчик событий с DispatcherUnhandledException для обработки необработанных исключений.Consequently, classes that derive from Application must always register an event handler with DispatcherUnhandledException to process unhandled exceptions.

Применяется к