鉴于方法:
public static void SubmitNewTutorial()
{
// Insert new tutorial method
AddToDatabase();
// Email notify anyone subscribed
SendOutEmailNotifications();
// Redirect to published tutorial page
Redirect();
}
SendOutEmailNotifications
可能很慢(如果有成千上万的订阅者,则可能需要30秒)。
在没有让作者提交新教程必须等待30秒才调用SendOutEmailNotifications
之前调用Redirect()
的最佳方法是什么?
是否以推荐方式将SendOutEmailNotifications
附加到新任务?
答案 0 :(得分:1)
您可以使用Hangfire
或尝试:
public static void SubmitNewTutorial()
{
// Insert new tutorial method
AddToDatabase();
// Email notify anyone subscribed
System.Web.Hosting.HostingEnvironment.QueueBackgroundWorkItem(ct => SendOutEmailNotifications());
// Redirect to published tutorial page
Redirect();
}
答案 1 :(得分:0)
如果它很慢但不是太慢,我可以在一个单独的线程上运行它,如上所述。如果需要很长时间,请将电子邮件详细信息写入数据库,然后使用完全不同的过程从数据库中获取这些详细信息并发送电子邮件。我会经常使用Windows服务。通过这种方式,它落后3秒或落后3分钟并不重要。