我想知道在被丢弃的任务抛出的情况下会发生什么?
示例:SendMailAsync 抛出异常会发生什么情况?
我需要担心/处理它吗?(即安全问题、内存泄漏或其他问题......)
async SendMailAsync(){ ... long process that throws an exception...}
Method(){
//_ = is discard as opposed to await
_ = SendMailAsync();
}
Run Code Online (Sandbox Code Playgroud)
我想知道在 [a] 丢弃的任务抛出的情况下会发生什么?
任务被终止。如果您已将事件处理程序附加到TaskScheduler.UnobservedTaskException,则将调用您的事件处理程序。
我需要担心/处理它吗?(即安全问题、内存泄漏或其他问题......)
这取决于您是否关心任务抛出异常的事实。如果不这样做,您可以忽略它。如果您想记录邮件发送失败的事实(或通知您的应用程序的用户),您不应忽略它。
如果您不想等待任务,您也可以将Task.ContinueWith 与 一起TaskContinuationOptions.OnlyOnFaulted使用。