这是一个C#异步代码段。 GetAsync与GetAsync2相同吗? GetAsync是正确的实现吗?
public Task<IHttpActionResult> GetAsync()
{
return GetOneAsync();
}
public async Task<IHttpActionResult> GetAsync2()
{
return await GetOneAsync();
}
private async Task<IHttpActionResult> GetOneAsync()
{
using (var httpClient = new HttpClient())
{
await httpClient.GetAsync("http://baidu.com");
}
return Ok();
}
答案 0 :(得分:1)
不一样。 GetAsync
不会生成状态机,也不会等待GetOneAsync
的结果,这是此方法中不需要async
方法的结果时的首选选项。
生成的代码效率更高,并且不生成状态机,也不需要上下文切换。
有关详细信息,请参阅Understanding the cost of Async/Await文章。