我有一个简单的问题,但我认为有多个答案,但是以下内容是否有好/坏做法?
我正在为给定的接口方法实现:
Task<Model> GetDataAsync(CancellationToken token);
因此在我的实现中,我得到了以下签名;
public async Task<Model> GetDataAsync(CancellationToken token)
但是,此实现缺少任何异步调用;
只是常规的:return x.firstOrDefault...
所以我遇到了下一个问题;这里需要一些建议;
我应该做一个await Task.Run(...);
还是可以实现给定的接口(我需要顺便说一句),还是有更好的方法?以及有什么好处。
答案 0 :(得分:4)
您可以从给定的结果返回已完成的任务,而无需调用await / Task.Run(考虑到您确实不想从另一个线程运行它)
public Task<Model> GetDataAsync(CancellationToken token)
{
return Task.FromResult(x.FirstOrDefault(...));
}
并且不要忘记从方法签名中删除async