首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使我的MVC异步控制器方法异步,以便它们可以同时处理。

使我的MVC异步控制器方法异步,以便它们可以同时处理。
EN

Stack Overflow用户
提问于 2020-07-08 07:23:39
回答 1查看 461关注 0票数 1

我有以下异步代码:

代码语言:javascript
复制
public class AsynchronousController : AsyncController
{
    public ActionResult IndexSynchronous(string city)
    {
        return View("Index");
    }

    public async Task<ActionResult> AsyncTest(string call1, string call2)
    {
        await Task.Delay(10000);
        return null;
    }
}

目标是我可以在IndexSynchronous进行处理时简单地打开AsyncTest,但是这种方式不能工作。我首先调用Asynctest,然后调用IndexSynchronous来验证这一点,后者仍在等待其他操作。

有人能告诉我我错过了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-08 07:48:13

异步等待不是并行编程。它的目的是在等待IO操作时避免无用的CPU处理。

当你这样做时:

代码语言:javascript
复制
string fileContent = await GetFileContent();

您只是告诉当前线程停止它的执行,直到它收到一个interupt (IO操作完成)。现在任务出现了:当正在执行任务的线程等待IO操作继续时,它可以在等待时开始执行另一个任务。

进程的并行度由正在使用的线程池的线程数表示。每个线程都执行任务。当线程调用等待时,停止当前任务的执行并开始执行另一个任务。

异步等待通过避免线程在等待IO操作时使用CPU来提高性能。

为了回答您的问题,即使在没有异步控制器的旧ASP.NET web应用程序中,您也可以同时处理不同的请求(以及不同的控制器操作)。你不需要做任何事情来达到这个目的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62789564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档