У меня есть следующий сценарий,
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 и Forget в Asyn c Await Methods?