【发布时间】:2020-01-14 00:00:50
【问题描述】:
当调用这样的方法而不执行await 任务时,我们可以返回以下内容:
public Task<bool> GetBoolAsync()
{
return Task.FromResult(true);
}
IAsyncEnumerable<> 的等效项并避免警告。
async IAsyncEnumerable<bool> GetBoolsAsync() // <- Ugly warning
{
yield return true;
yield break;
}
警告 CS1998 此异步方法缺少“等待”运算符,将同步运行。考虑使用 'await' 运算符来等待非阻塞 API 调用,或使用 'await Task.Run(...)' 在后台线程上执行 CPU 密集型工作。
【问题讨论】:
-
如果你的方法不使用等待,为什么它是异步的?这就是警告的意思。
-
您打算在该方法中做任何异步操作吗?
-
它正在匹配一个接口。其他类将使其异步。
-
那好吧,不要注意警告。
-
这里没有必要忽略警告 - 根据我的回答,代码可以很容易地编写为无警告。 (没有明显的原因,它被否决了,但其他答案也被否决了。代码肯定有效。)
标签: c# async-await iasyncenumerable