我有一个继承接口的类,其中
GetArticle
方法定义为 async
。其中一个实现类在实现内部使用 await
,但另一个类不需要等待并同步运行,但方法签名仍然具有 async
关键字。
实现后者同步方法的正确方法是什么,这样它就不会显示“方法将同步运行”警告?
public async Task<Article> GetArticle(int articleId)
{
return _articles.Where(a => a.ArticleId == articleId).FirstOrDefault();
}
如果您必须实现接口,这是一个常见问题。只需删除 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);
}