我有以下情况,
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()
完成之前返回,是否会引发异常?在异步等待方法中进行Fire and Forget调用是一种好习惯吗?
答案 0 :(得分:2)
这只是一个警告,因此您知道尚未await
启用它。您可以使用“丢弃”来表明您不在乎它是否最终运行完成:
_ = SendSMS();
所以,问题是,如果在完成SendSMS()或SendEmail()之前返回UserRegistration()方法,它会引发异常吗?
不。
在Async Await方法中进行Fire和Forget调用是一种好习惯吗?
我不认为。