希望这是一个不错且简单的答案。
我在 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;
}
并看到了其他类似的例子。
示例 2:
public async Task<IActionResult> ExampleCall([FromBody]ExampleObj model)
{
// Call some lower level function...
var result = await LowerLevelCall(model);
return result;
}
主要区别在于示例 2 使用 await
运算符。实现 await
运算符的含义是什么?这会释放资源而不是等待示例 1 中的代码完成吗?
提前感谢您的任何提示!
最佳答案
在您的场景中,async
运算符将停止执行该方法,直到从 LowerLevelCall
收到结果。但是,当该方法的执行停止时,await
会异步等待,因此线程本身不会被阻塞。从 LowerLevelCall
获得结果后,该方法将恢复同步执行。
示例 1 - 如果 LowerLevelCall
需要很长时间才能执行,您的线程将被阻塞并且将坐在那里什么都不做,直到 LowerLevelCall
执行完成。
示例 2 - 如果您使用 await
,您将不会阻塞线程,因为 await
是异步等待。 LowerLevelCall
完成执行后,方法的结果将分配给您的 result
变量。
Intro to Async And Await - 本文应该可以帮助您开始使用 async 和 await。
关于c# - 返回 Task<bool> 和只返回 bool 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838778/