被丢弃的任务出现异常会怎样?

Tom*_*sse 5 .net async-await

我想知道在被丢弃的任务抛出的情况下会发生什么?

示例:SendMailAsync 抛出异常会发生什么情况?

我需要担心/处理它吗?(即安全问题、内存泄漏或其他问题......)

async SendMailAsync(){ ... long process that throws an exception...}

Method(){
//_ = is discard as opposed to await
 _ = SendMailAsync();

}
Run Code Online (Sandbox Code Playgroud)

Hei*_*nzi 4

我想知道在 [a] 丢弃的任务抛出的情况下会发生什么?

任务被终止。如果您已将事件处理程序附加到TaskScheduler.UnobservedTaskException,则将调用您的事件处理程序。

我需要担心/处理它吗?(即安全问题、内存泄漏或其他问题......)

这取决于您是否关心任务抛出异常的事实。如果不这样做,您可以忽略它。如果您想记录邮件发送失败的事实(或通知您的应用程序的用户),您不应忽略它。

如果您不想等待任务,您也可以将Task.ContinueWith 与 一起TaskContinuationOptions.OnlyOnFaulted使用。