Обратите внимание, что использование async
для метода, который не использует await
, считается плохим стилем.Если у вас есть синхронный метод, который возвращает задачу, вы должны использовать Task.FromResult
вместо:
public Task<bool> DoSomeStuffWithAsync()
{
return Task.FromResult(true);
}
Но да, вот и все: Синхронный метод, который возвращает задачу.Здесь нет ничего асинхронного, так что на самом деле это не работает иначе, чем обычный синхронный код, который просто возвращает bool.
Есть ли еще преимущество в возврате задачи вместо значения напрямую?Это зависит от.Иногда у вас может быть асинхронный интерфейс, который вам нужно реализовать, но на самом деле у вас нет асинхронной реализации для него.Но если вам не нужно этого делать, и если вы не планируете в конечном итоге изменить свою реализацию, чтобы сделать что-то асинхронно, то нет смысла заставлять ваш метод возвращать задачу.
Что касается вызова, await DoSomeStuffWithAsync()
запустит DoSomeStuffWithAsync()
, а затем дождется задачи, которую вернет.Поскольку DoSomeStuffWithAsync()
является синхронным, задание будет возвращено напрямую, а поскольку задание уже выполнено, await
сможет непосредственно продолжить.Так что это будет очень похоже на синхронный вызов метода.Однако наличие этого await
оказывает влияние на поведение во время выполнения, поскольку это сделает этот вызывающий метод фактически асинхронным (даже если вызываемый код является синхронным).
Но решать вам, стоит лиэто уместно в вашем случае.В общем, вам, вероятно, следует избегать появления асинхронности, если в ней не задействован настоящий асинхронный процесс.