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 не вызывается. В таких случаях вам потребуется написать код, чтобы выполнить следующие действия:
Обработка исключений в фоновом потоке.
Отправка этих исключений в основной поток пользовательского интерфейса.
Повторно запустите их в основном потоке пользовательского интерфейса, не обрабатывая их, чтобы разрешить DispatcherUnhandledException их вызывать.
Дополнительные сведения см. в обзоре модели потоков .
Обработчик DispatcherUnhandledException событий передает DispatcherUnhandledExceptionEventArgs аргумент, содержащий контекстную информацию об исключении, включая:
Исключение (Exception).
От Dispatcher которого она возникла (Dispatcher).
Эти сведения можно использовать для определения возможности восстановления исключения. Например, исключение, допускаемое для восстановления, может быть FileNotFoundException, например, неустранимым StackOverflowExceptionисключением.
При обработке необработанного исключения из DispatcherUnhandledException, и вы не хотите, чтобы WPF продолжал обрабатывать его, необходимо задать Handled для свойства значение true.
В отличие от других событий, которые Application возникают, DispatcherUnhandledException не имеет соответствующей защищенной виртуальной реализации (OnDispatcherUnhandledException). Следовательно, классы, производные от Application них, должны всегда регистрировать обработчик событий для DispatcherUnhandledException обработки необработанных исключений.