ASP.NET MVC4异步控制器 - 为什么使用?(ASP.NET MVC4 Async cont

2019-07-20 21:16发布

我想知道为什么,当我应该使用async控制器动作。 最终,当我使用await它,它会等待操作,以便返回查看完成。

例如

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

在如果我使用的这种情况下async使用或不async行动将采取相同的时间执行。

如果我不尝试运行至少2个缓慢操作(即不依赖于对方)并行,我看不出有任何理由使用async控制器动作。

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

Answer 1:

该点await关键字是让你与异步操作的工作,而无需编写丑陋的回调。

使用异步操作有助于避免浪费线程池中的线程。

说明

ASP.Net运行所有的代码从托管线程池中的线程。
如果你有太多的缓慢请求同时运行,线程池,将得到充分的和新的要求将需要等待一个线程获得自由。

然而,通常您的要求是缓慢的,不是因为他们正在做计算(计算结合的),而是因为他们在等待其他的东西,如硬盘,数据库服务器,或外部Web服务(IO-或网络-界)。

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

异步操作允许您开始操作,你的线程返回到池中,那么当操作完成在不同的线程池线程“唤醒”。
当操作运行时,没有线程消耗。



文章来源: ASP.NET MVC4 Async controller - Why to use?