异步等待实际上是阻塞调用吗?

时间:2021-02-19 10:10:53

标签: c# async-await

private async Task<string> GetStateInfo()
{
   var cityId = await GetCityIdByNameAsync("Delhi");
   var state = await GetStateNameAsync(cityId);
   return state;
}

我们知道 async 和 await 用于异步编程,它们用于非阻塞编程模型。但是在上面的代码中 var state = await GetStateNameAsync(cityId);在第一行执行时执行,因为它从中获取输入。 所以我不明白是阻塞调用还是非阻塞调用?

1 个答案:

答案 0 :(得分:3)

请看我的async introawait 是一个“异步等待”,因此它“暂停”该方法并返回一个不完整的 Task<string> 实例。所以方法正在等待GetCityIdByNameAsync返回的任务完成,但是没有线程阻塞等待它。