首页新闻找找看学习计划

C#中消除"This async method lacks 'await' operators and will run synchronously..."警告的最优雅方法

0
悬赏园豆:50 [已解决问题] 解决于 2019-10-27 16:21

中 C# 中,有一个接口定义了一个异步方法,但实现接口时并没有异步操作,没有用到 await ,编译器会告警:

This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.

请问如何最优雅地消除这个警告?

dudu的主页 dudu | 高人七级 | 园豆:41011
提问于:2019-10-26 14:47
< >
分享
最佳答案
0

return Task.CompletedTask

收获园豆:50
jello chen | 大侠五级 |园豆:7091 | 2019-10-27 00:33

异步方法有返回值,最终采用 await Task.CompletedTask

public async Task<CheckStatus> Check(Checkee checkee)
{
    //...
    await Task.CompletedTask;
    return CheckStatus.Pass;
}
dudu | 园豆:41011 (高人七级) | 2019-10-27 16:21
其他回答(2)
0

既然定义了异步方法,楼主为什么不直接使用异步操作呢

初夏的阳光丶 | 园豆:353 (菜鸟二级) | 2019-10-27 14:17

用不到异步操作

支持(0) 反对(0) dudu | 园豆:41011 (高人七级) | 2019-10-27 14:52
0

删除async关键字即可。

.NET骚操作 | 园豆:202 (菜鸟二级) | 2019-10-28 10:19

这样每个 return 返回值的地方都要 Task.FromResult

支持(0) 反对(0) dudu | 园豆:41011 (高人七级) | 2019-10-28 10:34

@dudu: 合理,性能方面,总比加个无用的await要好。

支持(0) 反对(0) .NET骚操作 | 园豆:202 (菜鸟二级) | 2019-10-28 10:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册