gpt4 book ai didi

c# - 没有等待的异步任务的第二次实现

转载 作者:行者123 更新时间:2023-12-04 00:02:20 25 4
gpt4 key购买 nike

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

我的界面数据库服务 有两个实现: FirestoreDatabaseService 缓存数据库服务 . 有意义FirestoreDatabaseService 使用 Method async Task AddResult(ResultDto result) 作为方法的结果,但 缓存数据库服务只有一个列表,不需要等待,它基本上是一个 void 方法。

我收到警告“警告 CS1998 此异步方法缺少 'await' 运算符,将同步运行。考虑使用 'await' 运算符等待非阻塞 API 调用,或 'await Task.Run(...)'”当我在 CacheDatabaseService 异步中实现该方法。如果我删除异步我必须返回一个任务,但 Task.FromResult 不适用于 void 任务。

最佳答案

该警告几乎总是意味着您的方法不应该是 async .
async关键字实际上只是允许使用 await .因此,如果您不使用 await , 你不需要 async .

如果 AddResult必须返回 Task ,然后返回 Task .如果您实际上没有做任何异步操作,那么您可以返回 Task.CompletedTask .

例如:

public Task AddResult(ResultDto result) {
...
return Task.CompletedTask;
}

如果你必须返回一个值( Task<T> ),那么你可以使用 Task.FromResult() .

指定方法应返回 Task 的接口(interface)只是一种使方法成为可能的方法 async .这并不意味着它必须。

关于c# - 没有等待的异步任务的第二次实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58592433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com