异步方法中同步代码的首选方式
preferred way of synchronous code in async method
我有一个简单的问题,但我认为有多个答案,但是是否有关于以下内容的good/bad练习;
我正在研究给定接口方法的实现:
Task<Model> GetDataAsync(CancellationToken token);
所以在我的实现中我得到了以下签名;
public async Task<Model> GetDataAsync(CancellationToken token)
但是,此实现缺少任何异步调用;
只是一个普通人:return x.firstOrDefault...
所以我遇到了下一个问题;这里需要一些建议;
我应该做 await Task.Run(...);
这样我仍然可以实现给定的接口(顺便说一句,我需要),还是有更好的方法?有什么好处。
您可以 return 从给定的结果中完成任务而无需调用 await / Task.Run(考虑到您真的不想从另一个线程 运行 它)
public Task<Model> GetDataAsync(CancellationToken token)
{
return Task.FromResult(x.FirstOrDefault(...));
}
并且不要忘记从方法签名
中删除async
我有一个简单的问题,但我认为有多个答案,但是是否有关于以下内容的good/bad练习;
我正在研究给定接口方法的实现:
Task<Model> GetDataAsync(CancellationToken token);
所以在我的实现中我得到了以下签名;
public async Task<Model> GetDataAsync(CancellationToken token)
但是,此实现缺少任何异步调用;
只是一个普通人:return x.firstOrDefault...
所以我遇到了下一个问题;这里需要一些建议;
我应该做 await Task.Run(...);
这样我仍然可以实现给定的接口(顺便说一句,我需要),还是有更好的方法?有什么好处。
您可以 return 从给定的结果中完成任务而无需调用 await / Task.Run(考虑到您真的不想从另一个线程 运行 它)
public Task<Model> GetDataAsync(CancellationToken token)
{
return Task.FromResult(x.FirstOrDefault(...));
}
并且不要忘记从方法签名
中删除async