Web API中的异步等待控制流


webcontroller {
async Task<ActionResult<string>> doSomething() {
var stringResult = await doSomethingAsync();
return stringResult;
}
}

这里的控制流是什么?控制器是在到达doSomething((方法调用后向客户端返回伪响应(ActionResult(,还是控件保留在web控制器中并向客户端返回stringResult?考虑doSomething((是做一些网络密集型任务,可能需要更多时间才能完成。如果可能的话,谁能向我解释一下吗?提前感谢!

控制器会向客户端返回伪响应(ActionResult(吗到达doSomething((方法调用或控件保留在web控制器中并将字符串Result返回给客户端

doSomething方法完成之前,它不会向客户端返回任何内容。

考虑doSomething((正在执行一些网络密集型任务完成可能需要更多时间

在这种情况下,客户端将超时。

你必须开始做背景工作。返回到已启动任务的客户端。然后以某种方式告诉客户任务已经完成。

另一个信息来源:WebAPI 中的长期运行任务

我建议阅读我写的一篇关于async如何在ASP.NET上工作的文章。

控制器在到达doSomething((方法调用后会向客户端返回伪响应(ActionResult(吗?还是控件保留在web控制器中并向客户端返回字符串Result?

doSomethingAsync返回未完成任务时,doSomething中的await也将返回未完成的任务。然后,ASP.NET运行时(异步(等待该任务完成,然后再发送响应。

ASP.NET中的await向线程池让步;它不会向客户端屈服。

最新更新