例如,有时我需要发送电子邮件或短信,这需要很长时间。我需要尽快响应网络客户端,所以我不想使用
await
。我已经搜索了一些文章,有些建议我这样写:
// This method has to be async
public async Task<Response> SomeHTTPAction()
{
// Some logic...
// ...
// Send an Email but don't care if it successfully sent.
Task.Run(() => _emailService.SendEmailAsync());
return MyRespond();
}
或者像这样:
// This method has to be async
public async Task<Response> SomeHTTPAction()
{
// Some logic...
// ...
// Send an Email but don't care if it successfully sent.
Task.Factory.StartNew(() => _emailService.SendEmailAsync());
return MyRespond();
}
会出现一个警告,提示:在调用完成之前,请考虑将 'await' 操作符应用于调用的结果。
那如果我真的 await
了呢?在C#中,如何最好地“点火并忘记”,即调用异步方法而不等待其完成?
MyRespond
有什么意义呢? - user585968