2012-11-09 94 views
9

我检查了MVC 4.0中的System.Web.Mvc.AsyncController,它有注释“提供与ASP.NET MVC 3的向后兼容性”。这是否意味着MVC 4中有一个新的异步控制器实现? MVC 4.0中的正确方法是什么启用异步控制器,以便将I/O激烈操作放入除IIS请求线程池以外的其他线程池?ASP.NET MVC中的异步控制器

回答

12

从ASP.NET MVC 4开始,你现在可以使用System.Web.Mvc.Controller类的基类,并充分利用TAP(基于任务的异步模式):

public async Task<ViewResult> Index() { 

    return View(await GetThingsAsync()); 
} 

注意,您不必使用C#5.0附带的关键字asyncawait,但它们使异步编程变得更容易,更容易,更易于维护。

看一看下面的文章:

+0

不'async'和'await'配备了C#4.5,而不是5.0? – Spook

+2

@Spook没有C#4.5:https://en.wikipedia.org/wiki/C_Sharp_(programming_language)#Versions async/await语言支持随C#5.0一起提供,它也需要.NET 4.5。您可以使用.NET 4.0并利用来自BCL团队的NuGet包的异步/等待语言功能:http://www.nuget.org/packages/Microsoft.Bcl.Async/ – tugberk