ASP.NET MVC非同期コントローラアクションでTask.Run()
を使用することについてアドバイスが必要です。現在、「承認」をクリックすると実行に時間がかかるバックエンドSPがあります。ユーザーは、承認する必要があり、このバックエンドの実行が完了するまで待つ必要はないので、ここではTask.Run
を使用しています(下のコードを参照)。非同期ASP.Net MVCコントローラのアクションでTask.Run()を実行
以前これは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) –