sim*_*msi 4 c# asynchronous async-await
当我有一个返回任务 (void) 的接口但其中一个实现没有异步操作时,我该怎么办?
我的接口IDatabaseService有两个实现:FirestoreDatabaseService和CacheDatabaseService。这是有道理的,FirestoreDatabaseService使用方法异步任务AddResult(ResultDto结果)作为方法的结果,但CacheDatabaseService只有一个列表,不需要的await,它基本上是一个无效的方法。
我收到警告“警告 CS1998 此异步方法缺少 'await' 运算符,将同步运行。考虑使用 'await' 运算符来等待非阻塞 API 调用,或使用 'await Task.Run(...)'”时在 CacheDatabaseService 异步实现方法。如果我删除异步,我必须返回一个任务,但 Task.FromResult 不适用于无效任务。
该警告几乎总是意味着您的方法不应该是async
.
该async
关键字真的只是允许使用的await
。因此,如果您不使用await
,则不需要async
.
如果AddResult
必须返回 a Task
,则返回 a Task
。如果您实际上没有做任何异步操作,那么您可以返回Task.CompletedTask
.
例如:
public Task AddResult(ResultDto result) {
...
return Task.CompletedTask;
}
Run Code Online (Sandbox Code Playgroud)
如果必须返回值 ( Task<T>
),则可以使用Task.FromResult()
.
指定方法应返回 a 的接口Task
只是使该方法成为可能的一种方式async
。这并不意味着它必须。
归档时间: |
|
查看次数: |
388 次 |
最近记录: |