返回任务<bool>并返回bool的区别是什么

Rob*_*abe 5 c# asp.net asp.net-mvc task-parallel-library

希望这是一个很好而简单的答案.

我在ASP.NET Core 1中使用C#MVC Web API.我正在创建Web方法,并且我已经看到了返回数据的示例.

例1:

public async Task<IActionResult> ExampleCall([FromBody]ExampleObj model)
{
     // Call some lower level function...
     var result = LowerLevelCall(model);
     return result;
}
Run Code Online (Sandbox Code Playgroud)

并看到这样的其他例子.

例2:

public async Task<IActionResult> ExampleCall([FromBody]ExampleObj model)
{
     // Call some lower level function...
     var result = await LowerLevelCall(model);
     return result;
}
Run Code Online (Sandbox Code Playgroud)

主要区别在于使用await运算符的示例2 .实施await运营商的意义是什么?这个免费资源会不会等待代码在示例1中完成?

提前感谢任何提示!

Ker*_*rla 5

在您的方案中,async操作员将停止执行该方法,直到收到结果LowerLevelCall.但是,当停止执行该方法时,将await异步等待,以便不阻止该线程本身.从LowerLevelCall方法获得结果后,只需恢复同步执行.

示例1 - 如果LowerLevelCall执行需要很长时间,您的线程将被阻塞,并且只有在执行LowerLevelCall完成之后才会执行任何操作.

示例2 - 如果使用await,则不会阻止线程,因为await异步等待.之后LowerLevelCall执行方法的结果结束将分配给您的result变量.

异步和等待简介 - 本文应该可以帮助您开始使用异步和等待.