【发布时间】:2021-11-25 11:05:59
【问题描述】:
我有一个 .net webapi,其中包含一些用于发送电子邮件的代码。
public async Task CheckOut(CheckOutData checkOutData){
...
...
...
//What are the risks if I remove the await
await SendEmail(checkOutData);
...
...
}
public async Task SendEmail(CheckOutData checkOutData)
{
try{
...
...
...
}
catch (exception ex){
//log Error
}
}
我在SendEmail 代码中设置了日志记录。我的问题是,如果我删除等待,如果在 SendEmail 完成之前执行完成,是否有可能杀死线程并且不发送电子邮件?
如果我删除等待,我是否安全?我愿意接受一个异常会被吞下,它会被记录下来。
【问题讨论】:
-
你会得到一个任务,除非你明确告诉它运行,否则它不会运行。
-
@HansPassant 很有趣,你有证据支持吗? The docs 似乎暗示所有返回的任务应该已经处于启动状态。
-
在阅读了this document 及其子页面之后,除了被吞没的异常之外,我找不到任何缺点。但我没有足够的信心声称这是正确的答案。