同步运行异步方法的正确方法?

问题描述 投票:0回答:1

我有一个继承接口的类,其中

GetArticle
方法定义为
async
。其中一个实现类在实现内部使用
await
,但另一个类不需要等待并同步运行,但方法签名仍然具有
async
关键字。

实现后者同步方法的正确方法是什么,这样它就不会显示“方法将同步运行”警告?

public async Task<Article> GetArticle(int articleId)
{
    return _articles.Where(a => a.ArticleId == articleId).FirstOrDefault();
}
c# asynchronous async-await
1个回答
1
投票

如果您必须实现接口,这是一个常见问题。只需删除 async 关键字并调用

Task.FromResult
即可。如果同步版本是
void
,您将返回
Task.CompletedTask

public Task<Article> GetArticle(int articleId)
{
    var result = _articles.Where(a => a.ArticleId == articleId).FirstOrDefault();
    return Task.FromResult(result);
}
© www.soinside.com 2019 - 2024. All rights reserved.