Бөлісу құралы:


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 кодом, выполняемым в основном потоке пользовательского интерфейса.

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

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

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

  3. Повторно запустите их в основном потоке пользовательского интерфейса, не обрабатывая их, чтобы разрешить DispatcherUnhandledException их вызывать.

Дополнительные сведения см. в обзоре модели потоков .

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

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

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

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

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