[英]Fire and Forget Async Await Call
我有以下场景,
public class User
{
public static async Task<bool> UserRegistration()
{
// So Many Async Async Await Methods
bool IsRegistrationSuccess = await RegisterUser();
if(IsRegistrationSuccess)
{
await SendSMS(); // Fire And Forget
await SendEmail(); // Fire And Forget
return true;
}
return false;
}
private static async Task SendSMS()
{
string URL = "http://www.example.com/dsad";
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(URL);
}
}
private static async Task SendEmail()
{
string emailMessage = "Some Email";
await EmailService.Send(emailMessage);
}
}
我想打电话给SendSMS();
和SendEmail();
无需等待。 不想等结果。 如果我这样做,那么会发出警告,
因为此调用未等待当前方法的执行在调用完成之前继续执行。 考虑将运算符应用于调用结果。
所以,问题是,如果UserRegistration()
方法在SendSMS()
或SendEmail()
完成之前返回,它是否会触发异常? 在 Async Await 方法中进行 Fire and Forget 调用是一种好习惯吗?
这只是一个警告,所以你知道它没有被await
。 您可以使用丢弃来明确表示您不关心它是否最终运行完成:
_ = SendSMS();
所以,问题是,如果 UserRegistration() 方法在 SendSMS() 或 SendEmail() 完成之前返回,它是否会触发异常?
不。
在 Async Await 方法中进行 Fire and Forget 调用是一种好习惯吗?
在我看来不是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.