首页 > 解决方案 > 这是 await Task.FromResult 必要的吗?

问题描述

自从我开始从事现有项目以来,我想到了一个问题:考虑以下代码片段

public async Task<IHttpActionResult> DoSomething(Guid token)
{
 var data= await repository.GetDataAsync(token);

 return await Task.FromResult(Ok(data));
}

据我所见,使用 await 我可以 return Ok(data)

但有人告诉我,不使用它Task.FromResult会导致异步问题......我在哪里可以找到关于这一点的更多信息?它用于 Web API 完整框架(不是 .NET Core)

标签: c#.netasp.net-web-apiasync-await

解决方案


绝对没有!

仅当您从存储库同步接收数据时才应使用Task.FromResult(Ok(data)),否则如果您至少有一个await关键字,则这是不必要的资源浪费。

所以,你可以这样重写你的方法:

public async Task<IHttpActionResult> DoSomething(Guid token)
{
    return Ok(await repository.GetDataAsync(token));
}

推荐阅读