Рассмотрим это,
Task task = new Task (async () =>{
await TaskEx.Delay(1000);
});
task.Start();
task.Wait();
Задача вызова .Wait() не ждет завершения задачи, и следующая строка выполняется немедленно, но если я обернуваю выражение асинхронного лямбда в вызов метода, код работает как ожидалось.
private static async Task AwaitableMethod()
{
await TaskEx.Delay(1000);
}
затем (обновляется согласно комментарию от svick)
await AwaitableMethod();