我有一个执行以下操作的控制器方法:
这种方法需要很长时间才能完成,我相信在流程结束时收到的电子邮件通常是罪魁祸首。在成功完成第4步之前,我无法向用户返回成功/失败。
为了加快页面响应时间,我想在第5步开始之前实际向用户返回响应,因为用户并不真正需要知道结果第5步。
我的第一个想法是制作两个控制器方法,让客户端在从第一个方法得到结果时自动点击第二个方法 - 但我宁愿不把这个逻辑交给客户端。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
您可以在操作的第5步中使用QueueBackgroundWorkItem对电子邮件工作进行排队,然后立即返回客户端。
HostingEnvironment.QueueBackgroundWorkItem(e =>
{
SendEmail();
});