不使用等待的危险

时间:2018-10-20 21:16:39

标签: c# .net-core

为了提高性能,我想退出一个函数而不等待所有异步函数完成。我只关心第一个函数的结果。其他人应该在任何时候完成并记录自己的异常。

// I care about this result
int? bookingId = await BookingService.SaveBooking(...); 

// These should run async in the background. All async methods.
EmailService.SendEmail(...);
CreditCardService.SaveCard(...);
SMSService.SendSms(...);

return bookingId;

在那里省略 await 关键字有什么风险?

1 个答案:

答案 0 :(得分:3)

这里的主要风险是它们失败并导致未观察到的异常。次要风险是一旦主操作完成,它们便尝试与不再有意义的异步状态进行交互。如果您对这两种方法都没有问题感到满意,则应该没问题-但是使用这种方法时应谨慎一些。从本质上讲,这是“一劳永逸”的情况-编译器将尝试与您抗争

相关问题