【发布时间】:2019-12-06 16:04:20
【问题描述】:
在我的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()来重现不良异步行为。 -
你能分享你的处理方法的签名吗?
标签: c# .net wpf asynchronous .net-4.7.2