Поделиться через


Application.DispatcherUnhandledException Событие

Определение

Происходит при генерации приложением исключения, которое не обрабатывается.

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 события .

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

Однако если приложению требуется выполнить пользовательскую обработку необработанных исключений из централизованного расположения, следует обработать DispatcherUnhandledException.

DispatcherUnhandledExceptionвызывается Application для каждого исключения, которое необработано кодом, выполняемым в потоке пользовательского интерфейса main.

Если исключение не обрабатывается ни в фоновом потоке пользовательского интерфейса (потоке со своим собственнымDispatcher), ни в фоновом рабочем потоке (потоке без Dispatcher), исключение не перенаправляется в поток пользовательского интерфейса main. Следовательно, DispatcherUnhandledException не вызывается. В таких случаях вам потребуется написать код, чтобы сделать следующее:

  1. Обработка исключений в фоновом потоке.

  2. Отправка этих исключений в поток пользовательского интерфейса main.

  3. Повторно создайте их в потоке пользовательского интерфейса main без обработкиDispatcherUnhandledException.

Дополнительные сведения см. в статье Общие сведения о потоковой модели .

Обработчику DispatcherUnhandledException событий передается DispatcherUnhandledExceptionEventArgs аргумент, содержащий контекстную информацию об исключении, в том числе:

Эти сведения можно использовать для определения возможности восстановления исключения. Например, восстанавливаемым исключением может быть FileNotFoundException, а неустранимым — StackOverflowException, например.

При обработке необработанного исключения из DispatcherUnhandledExceptionи не хотите, чтобы WPF продолжал его обработку, необходимо задать для свойства значение Handledtrue.

В отличие от других событий, которые Application вызывают, DispatcherUnhandledException не имеет соответствующей защищенной виртуальной реализации (OnDispatcherUnhandledException). Следовательно, классы, производные от , Application должны всегда регистрировать обработчик событий с для DispatcherUnhandledException обработки необработанных исключений.

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