Ваш метод может быть функционально сведен к этому.
public static Task F()
{
return Task.Delay(1000);
}
Возврат экземпляра Task.CompletedTask
полезен только в том случае, если применимы:
- , который вы не хотите использовать
async/await
- ваш метод возвращает задание (фактически
void
, если вы сделаете его не асинхронным) - ваш код имеет лог c, где задача не может быть возвращена
Пример:
public static Task F()
{
if (someConditionToShortCircutTheMethod)
return Task.CompletedTask;
// rest of logic
return Task.Delay(1000);
}
Как только вы сделаете свой метод async
, факт, что Задача действительно возвращается, абстрагируется. Это может облегчить работу с кодом, особенно если есть несколько точек, в которых код ожидает завершения операций ввода-вывода.
public static async Task F()
{
if (someConditionToShortCircutTheMethod)
return;
// rest of logic
await Task.Delay(1000);
await Task.Delay(1000);
// no return necessary, async Task has a similar flow as return type void
}
Я также рекомендую рассмотреть следующие предыдущие вопросы: