当我有一个返回任务(无效)但实现之一没有异步动作的接口时,该怎么办?
我的接口IDatabaseService具有两个实现:FirestoreDatabaseService和CacheDatabaseService。对于FirestoreDatabaseService,使用方法异步任务AddResult(ResultDto result)作为方法的结果是有意义的,但是CacheDatabaseService仅具有一个列表,不需要等待,它基本上是一个无效方法。
我收到警告“警告CS1998,此异步方法缺少'await'运算符,将同步运行。请考虑使用'await'运算符来等待非阻塞API调用,或'await Task.Run(...)'”在CacheDatabaseService异步中实现该方法。如果删除异步,我必须返回一个任务,但Task.FromResult不适用于无效的任务。
该警告几乎总是意味着您的方法不应如此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] 删除。
我来说两句