В моем App.xaml.cs
я создал обработчик для ответа на AppDomain.CurrentDomain.UnhandledException.
Внутри обработчика мне нужно вызвать асинхронный метод, который отправляет отчет об ошибке по электронной почте. Так что жду метод, а внутри него жду Net.Mail.SmtpClient.SendMailAsync().
Но это не работает — когда элемент управления достигает второго ожидания (прямо перед фактической отправкой), приложение закрывается.
Когда я избавлюсь от всей асинхронности и воспользуюсь синхронной альтернативой, Net.Mail.SmtpClient.Send() электронная почта отправляется правильно.
Кажется, внутри обработчика не выбрасываются никакие другие исключения. Кроме того, похоже, это не просто проблема режима отладки Visual Studio.
Разве нельзя успешно вызывать асинхронные методы внутри обработчика UnhandledException?
Обновление:
Сигнатура моего метода-обработчика выглядит так:
private async void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e);
и я присоединяю обработчик к событию в конструкторе App
вот так:
App()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
Task.Delay()
прямо в обработчике. - person zvizesna   schedule 06.12.2019