使用异步任务执行功能等待在当前线程中执行是否有好处?
[HttpGet]
[Route("example/{id}")]
public async Task<Example> GetExample(int id)
{
return await exampleService.GetExampleAsync(id);
}
相比:
[HttpGet]
[Route("example/{id}")]
public Example GetExample(int id)
{
return exampleService.GetExampleAsync(id).Result;
}
答案 0 :(得分:0)
是的,没有等待的调用将阻塞您的执行,直到方法全部完成。
这很糟糕,它会使服务器速度变慢。当您使用await关键字时,.Net框架将让事情开始运行,以便可以处理下一个请求。
处理完成后,它将把响应返回给调用方。此外,异步/等待是新的老年男人!我希望这可以帮助
答案 1 :(得分:0)
两个样本之间的主要区别是第二个样本是同步样本和阻塞样本。没有很多理由阻止async
代码,因为许多其他地方已经提到过。但是,您的第一个示例不必要地生成了状态机来处理不必要的async
件。如果您在await
方法内的async
之后无事可做,只需返回Task
:
[HttpGet]
[Route("example/{id}")]
public Task<Example> GetExample(int id)
{
return exampleService.GetExampleAsync(id);
}