【发布时间】:2020-02-23 19:23:36
【问题描述】:
当我有一个接口返回任务 (void) 但其中一个实现没有异步操作时,我该怎么办?
我的接口IDatabaseService有两个实现:FirestoreDatabaseService和CacheDatabaseService。 FirestoreDatabaseService 使用方法 async Task AddResult(ResultDto result) 作为方法的结果是有意义的,但 CacheDatabaseService只有一个列表,不需要等待,基本上是一个void方法。
我收到警告“警告 CS1998 此异步方法缺少 'await' 运算符,将同步运行。考虑使用 'await' 运算符等待非阻塞 API 调用,或 'await Task.Run(...)' " 当我在 CacheDatabaseService 异步中实现该方法时。如果我删除异步,我必须返回一个任务,但 Task.FromResult 不适用于 void 任务。
【问题讨论】:
-
return Task.CompletedTask;(尽管Task.FromResult(false)也可以,因为Task<T> : Task) -
这只是警告,您可以选择忽略它!
-
感谢您的回答,Task.CompletedTask 是我一直在寻找的。 @phuzi 我不再忽略警告,总是让它们出错。
标签: c# asynchronous async-await