предпочтительный способ синхронного кода в асинхронном методе - PullRequest
0 голосов
/ 04 июля 2018

У меня простой вопрос, но я думаю, что есть несколько ответов, но есть ли хорошая / плохая практика в отношении следующего:

Я работаю над реализацией для данного метода интерфейса:

Task<Model> GetDataAsync(CancellationToken token);

поэтому в моей реализации я получаю следующую подпись;

public async Task<Model> GetDataAsync(CancellationToken token)

однако в этой реализации отсутствуют какие-либо асинхронные вызовы; просто обычный: return x.firstOrDefault...

Итак, у меня следующая проблема; и вот вам нужен совет; Должен ли я сделать await Task.Run(...); Так что я все еще могу реализовать этот интерфейс (что мне нужно, кстати), или есть лучший подход? и каковы преимущества.

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете вернуть завершенное задание из заданного результата, не вызывая await / Task.Run (учитывая, что вы действительно не хотите запускать его из другого потока)

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

и не забудьте удалить async из сигнатуры метода

...