ОТ MSDN :
Если событие UnhandledException обрабатывается в домене приложения по умолчанию, оно вызывается там для любого необработанного исключения в любой поток, независимо от того, в каком домене приложения запущен поток.
Итак, у меня есть следующее:
Асин c метод в классе:
public Task Initialization { get; }
public MyClass(string language)
{
Initialization = InitializeAsync(language);
}
private async Task InitializeAsync(string language)
{
throw new Exception("Test Exception");
}
Зарегистрируйте событие, чтобы перехватить все необработанные исключения (в методе OnStartUp):
protected override void OnStartup(StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException += MyHandler;
}
private static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
MessageBox.Show("Exception", "Caption");
}
Проблема в том, что событие UnhandledException
не перехватывает исключение в методе InitializeAsync
Этот вопрос здесь на SO звучит для меня, что UnhandledException ловит исключение во всех потоках, но для меня нет.
Я пытался удалить ConfigureAwait(false)
, это тоже не работает.
Я использовал UnobservedTaskException
и DispatcherUnhandledException
, он тоже не работает
Когда я упаковываю исключение в конструкторе MyClass
, все работает нормально, но в InitializeAsync
метод, которого нет
Есть идеи?