与MVC3和ASP.NET4.5异步

时间:2014-11-14 17:48:25

标签: asp.net-mvc asp.net-mvc-3 asynchronous

我正在使用MVC3和ASP.NET 4.5

据我所知,即使我使用的是ASP.NET 4.5,我也无法使用新的MS“Await”,“Task”Async功能。我对么?我是否还必须使用旧的“AsyncController”方法。

最后,我所要做的就是“异步”一个私有方法,而不是完整的Action,就像“SendMail”方法调用会发生的那样。

    public ActionResult Index()
    {

     SendMail(); // Inbuilt Async

     //Copy Document in DB. This is coded by private method in class, but needs to be fired asynchronously
     CopyDocument();

     ViewBag.Message = "Getting documents, Check back soon";


    return View();
    }

那我怎么能只是“CopyDocument()”。

非常感谢提前。

2 个答案:

答案 0 :(得分:2)

MVC3无法识别Tasks

你可以从MVC4获得它。

<强>更新 虽然MVC3框架不直接完全支持Task async await,但您可以使用Task.Factory库,如@VsevolodGoloviznin的答案所示。

在这种情况下,建议使用Task.Run请参阅Stephen's blog on startnew-is-dangerousthis blog了解详情

使用以下

Task.Run(() => CopyDocument());

而不是

Task.Factory.StartNew(() => CopyDocument());

答案 1 :(得分:0)

您仍然可以使用任务并行库

Task.Factory.StartNew(() => CopyDocument());