发送电子邮件的时间太长(有时长达7-8秒)。
我想向客户发送回复,而无需等待电子邮件发送。这可能吗?
public async Task<IHttpActionResult> Action()
{
//Do something
await email.sendAsync(); //Can take up to 10 seconds...
return Ok();
}
我可以删除await,但显然我得到An asynchronous module or handler completed while an asynchronous operation was still pending
我怎样才能做到这一点?
答案 0 :(得分:2)
理想情况下,您可能希望将此工作卸载到其他进程,可能是队列,然后让一些订阅者处理该队列以发送电子邮件,但这是很多工作,我们生活在现实世界中。
您可以使用
HostingEnvironment.QueueBackgroundWorkItem(ct => email.sendAsync());
让某些完全可靠启动并运行。