第二种异步任务的实现,无需等待

银色的

当我有一个返回任务(无效)但实现之一没有异步动作的接口时,该怎么办?

我的接口IDatabaseService具有两个实现:FirestoreDatabaseServiceCacheDatabaseService对于FirestoreDatabaseService,使用方法异步任务AddResult(ResultDto result)作为方法的结果是有意义的,但是CacheDatabaseService仅具有一个列表,不需要等待,它基本上是一个无效方法。

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

加布里埃尔·卢西(Gabriel Luci)

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

async关键字真的只是允许使用的await因此,如果您不使用await,则不需要async

如果AddResult 必须返回Task,则返回Task如果您实际上没有执行异步操作,则可以返回Task.CompletedTask

例如:

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

如果必须返回值(Task<T>),则可以使用Task.FromResult()

指定方法应返回a的接口Task只是使该方法成为可能的一种方式async这并不意味着必须。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

vb。净等待第二种形式关闭,然后继续

来自分类Dev

vb。净等待第二种形式关闭,然后继续

来自分类Dev

MySQL搜索并替换第二种模式

来自分类Dev

以第二种形式使用QMediaPlayer

来自分类Dev

向div添加第二种样式

来自分类Dev

以第二种形式使用SerialPort

来自分类Dev

第二种物质未在辉石中显示

来自分类Dev

从第二种形式填充DataGridView

来自分类Dev

以第二种形式访问richtextbox

来自分类Dev

MySQL搜索并替换第二种模式

来自分类Dev

MVC SqlQuery和第二种

来自分类Dev

无法加载第二种形式的C#

来自分类Dev

没有JS的第二种形式目标?

来自分类Dev

从第二种形式传递第二个参数?

来自分类Dev

当在C#.net中单击第二种形式的按钮时,如何从第二种中获取主要形式的字符串数据?

来自分类Dev

一种形式关闭-第二种形式更新DataGridView

来自分类Dev

根据第一种形式的结果显示第二种形式

来自分类Dev

为什么JavaScript在第二种情况下不查找全局范围

来自分类Dev

使用ifndef和||进行条件编译 没有第二种情况

来自分类Dev

添加第二种状态后AngularJS路由不起作用

来自分类Dev

PyQt类不适用于第二种用法

来自分类Dev

Config.xml中的Magento块类重写-第二种猜测我的方法

来自分类Dev

VBA中的斯特林数字第二种

来自分类Dev

runge kutta第二种方法的python代码是什么?

来自分类Dev

正则表达式的第二种模式不替换撇号

来自分类Dev

正则表达式认为我的第二种选择无效

来自分类Dev

在第二种情况下无法理解输出

来自分类Dev

CSS:圆形进度栏添加第二种颜色

来自分类Dev

无法理解Foreach php的第二种形式

Related 相关文章

热门标签

归档