ASP.NET MVC4asynchronous控制器 – 为什么要使用?

我想了解为什么和什么时候应该使用async控制器操作。 最后,当我用它等待,它将等待操作完成,以返回视图。

例如

 public async Task<ActionResult> TryMe() { await SomeActionAsync(); return View(); } 

在这种情况下,如果我使用async或不使用async ,则Action将执行相同的时间。

如果我不想并行运行至less两个慢速操作(不依赖于对方),我看不到有任何理由使用async控制器操作。

如果我错了,请纠正我。 我想我在这里错过了一些东西。

await关键字的意义在于让您可以使用asynchronous操作而不写丑陋的callback。

使用asynchronous操作有助于避免浪费线程池线程。

说明

ASP.Net从pipe理线程池中的线程中运行所有代码。
如果一次运行的请求太慢,线程池将会被占满,新的请求将需要等待一个线程被释放。

然而,通常情况下,你的请求很慢,不是因为他们在做计算(计算绑定),而是因为他们在等待其他的东西,比如硬盘,数据库服务器或者外部web服务(IO-或者networking-界)。

浪费一个珍贵的线程池线程没有意义,只是等待外部操作完成。

asynchronous操作允许您启动操作,将您的线程返回到池中,然后在操作完成时在不同的线程池线程上“唤醒”。
操作正在运行时,不消耗线程。