ASP.net运行慢速方法的最佳方法

时间:2015-11-26 16:54:18

标签: c# asp.net performance asynchronous

鉴于方法:

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附加到新任务?

2 个答案:

答案 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分钟并不重要。