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