我正在使用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()”。
非常感谢提前。
答案 0 :(得分:2)
MVC3无法识别Tasks
。
你可以从MVC4获得它。
<强>更新强>
虽然MVC3框架不直接完全支持Task
async
await
,但您可以使用Task.Factory
库,如@VsevolodGoloviznin的答案所示。
在这种情况下,建议使用Task.Run
请参阅Stephen's blog on startnew-is-dangerous和this blog了解详情
使用以下
Task.Run(() => CopyDocument());
而不是
Task.Factory.StartNew(() => CopyDocument());
答案 1 :(得分:0)
您仍然可以使用任务并行库
Task.Factory.StartNew(() => CopyDocument());