我需要你在ASP.NET MVC異步控制器操作使用Task.Run()
建議。我們目前有一個耗時的後端SP,當用戶單擊「批准」時,需要幾分鐘的時間才能執行。用戶只需要批准,不必等到後端執行完成,因此我們在此處使用Task.Run
,如下面的代碼所示。Task.Run()在異步ASP.Net MVC控制器行動
早些時候,使其在後臺完成這是由ThreadPool.QueueUserWorkItem()
完成。現在,我們正在將此應用程序遷移到ASP.Net MVC 5.0。
我們測試了這一點,它的所有工作正常,但我們需要知道這將不會造成未來的任何問題。請指教。
public async Task<ActionResult> ApprovePayments(int Id)
{
await (db.PaymentApprove(Id, User == null ? "" : User.Identity.Name));
Task.Run(() => {
DBModel dbReport = new DBModel();
dbReport.PaymentReportCreate(Id);
dbReport.Dispose();
});
SetUnapprovedPaymentsViewBag();
return View("PendingPayments");
}
Scott Hanselman幾年前做了一個綜述:[如何在ASP.NET中運行後臺任務](http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx) –