异步方法中同步代码的首选方式

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

我有一个简单的问题,但我认为有多个答案,但是有关于以下内容的好/坏做法;

我正在为给定的接口方法实现:

Task<Model> GetDataAsync(CancellationToken token);

所以在我的实现中,我得到以下签名;

public async Task<Model> GetDataAsync(CancellationToken token)

但是,这种实现缺少任何异步调用;只是一个常规:return x.firstOrDefault...

所以我得到了下一个问题;这是一些需要的建议;我应该做一个await Task.Run(...);所以我仍然可以实现给定的接口(我需要顺便说一句),还是有更好的方法?有什么好处。

c# asynchronous synchronous
1个回答
4
投票

您可以从给定结果返回已完成的任务,而无需调用await / Task.Run(考虑到您真的不想从另一个线程运行它)

public Task<Model> GetDataAsync(CancellationToken token)
{
    return Task.FromResult(x.FirstOrDefault(...));
}

并且不要忘记从方法签名中删除async

© www.soinside.com 2019 - 2024. All rights reserved.