@marklondon

Можно ли так использовать Task.FromResult и имеет ли это вообще смысл?

Попался мне на глаза вот такой код. Как я понимаю, человек хочет использовать синхронную операцию в асинхронном методе (первый вопрос.. зачем если есть другие методы с асинхронной поддержкой, но ладно, возможно это не ошибка), поэтому он использует Task.FromResult. Но зачем использовать await? FromResult же должен использоваться как раз для того, чтобы избежать создания машины состояний, которая появляется при async/await. Не будет ли эта связка await+TaskResult очень тяжёлой по производительности и бесполезной в контексте данной задачи метода репозитория?
Код

public async Task> GetUsers(string id)
{
return await Task.FromResult(Users.Where(x => x.Id == id));
}
  • Вопрос задан
  • 302 просмотра
Решения вопроса 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Не будет ли эта связка await+TaskResult очень тяжёлой по производительности

Проверьте 2 версии кода на тестах, что быстрее то и используйте :)
Ответ написан
По производительности будет +/- одно и то же, но вариант с await чуть памяти сожрёт.
В целом похоже больше на ошибку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы