是的,我知道还有其他问题涉及到这个警告的含义以及如何解决它,但是我有一个关于异步编程最佳实践的问题。
我有一个服务层,它处理数据层和表现层之间的数据传输。该服务包含几个方法,用于查询数据库并返回结果。
我一直在尝试在可能的情况下使用异步编程。一个例子:
我不需要在那个函数中等待任何东西,但我也不需要调用
我有一个服务层,它处理数据层和表现层之间的数据传输。该服务包含几个方法,用于查询数据库并返回结果。
我一直在尝试在可能的情况下使用异步编程。一个例子:
public async Task<SiteTemplateResource[]> GetResources(int siteTemplateId, string extension)
{
return await Database.FindBy<SiteTemplateResource>(str => str.SiteTemplateId == siteTemplateId && str.HashedFile.EndsWith(extension)).ToArrayAsync();
}
我的问题是,实际上我并没有等待任何东西,除了 ToArrayAsync
调用,而我其实也不是真的需要它。
我应该继续使用 async/await 吗?如果要在这个函数中等待什么,应该怎么做?
public async Task<int> SiteTemplateBySiteIdAsync(int siteId)
{
return Database.First<SiteSiteTemplate>(sst => sst.SiteId == siteId).SiteTemplateId;
}
我不需要在那个函数中等待任何东西,但我也不需要调用
ToArrayAsync
,那么如何避免上述情况中的警告“方法缺少'await'运算符”?谢谢。
ToArrayAsync
,那么你也应该有FirstAsync
。至于第一个方法 - 只需删除 async\await 关键字即可。ToArrayAsync
返回 Task,而你的 GetResources 方法也返回 Task - 这里不需要使用 async\await。 - Evkasync/await
。只需使用public Task<...> GetResources(..) => return Database.FindBy.....ToArrayAsync();
- Panagiotis KanavosWhere
、Select
和FirstAsync
来使第二个方法也保持异步。 - Panagiotis Kanavos