C# 无等待异步任务的二次实现

C# 无等待异步任务的二次实现,c#,asynchronous,async-await,C#,Asynchronous,Async Await,当我有一个返回任务(void)的接口,但其中一个实现没有异步操作时,我该怎么办 我的接口IDatabaseService有两种实现:FirestoreDatabaseService和CacheDatabaseService。FirestoreDatabaseService使用方法async Task AddResult(ResultTo result)作为方法的结果是有意义的,但是CacheDatabaseService只有一个列表,不需要等待,它基本上是一个无效的方法 我得到一个警告“警告CS

当我有一个返回任务(void)的接口,但其中一个实现没有异步操作时,我该怎么办

我的接口IDatabaseService有两种实现:FirestoreDatabaseServiceCacheDatabaseServiceFirestoreDatabaseService使用方法async Task AddResult(ResultTo result)作为方法的结果是有意义的,但是CacheDatabaseService只有一个列表,不需要等待,它基本上是一个无效的方法


我得到一个警告“警告CS1998,这个异步方法缺少‘等待’操作符并将同步运行。考虑在ActhEdababaseService异步中实现该方法时,使用‘Acess’操作符等待非阻塞API调用,或者‘等待任务。运行…””。如果删除async,我必须返回一个任务,但是task.FromResult不适用于无效任务。

该警告几乎总是意味着您的方法不应该是
async

async
关键字实际上只允许使用
wait
。因此,如果不使用
wait
,则不需要
async

如果
AddResult
必须返回
任务
,则返回
任务
。如果您实际上没有执行任何异步操作,那么可以返回

例如:

public Task AddResult(ResultDto result) {
    ...
    return Task.CompletedTask;
}
如果必须返回值(
任务
),则可以使用


指定方法应返回
任务
的接口只是使方法
异步
成为可能的一种方法。这并不意味着它必须返回任务。

返回任务。完成任务(虽然
Task.FromResult(false)
也可以工作,因为
Task:Task
)这只是警告,您可以选择忽略它!谢谢你的回答,Task.CompletedTask是我一直在寻找的@phuzi我停止忽略警告并总是将它们设置为错误。我相信方法名是
AddResult
FirestoreDatabaseService
是使用异步方法的类的名称。是的,但是这个概念很有效-我一直在寻找它。我会尽快将此答案标记为已接受的解决方案。非常感谢你!奇怪的是,我经常去寻找答案,却从同一个来源的问题中找到了答案。在我的例子中,这是一个与Firebase相关的IHostedService——它需要一个异步StartAsync()方法。但我没有任何异步实现。感谢你在这里提出的问题和答案!