Учти это,
Task task = new Task (async () =>{
await TaskEx.Delay(1000);
});
task.Start();
task.Wait();
Вызов task.Wait () не ожидает завершения задачи, и следующая строка выполняется немедленно, но если я заключу асинхронное лямбда-выражение в вызов метода, код будет работать должным образом.
private static async Task AwaitableMethod()
{
await TaskEx.Delay(1000);
}
затем (обновлено в соответствии с комментарием svick)
await AwaitableMethod();
AwaitableMethod
вы фактически возвращаетесь и вызываете Wait для задачи, возвращенной методом .Delay () (я предполагаю, что она возвращаетTask
). В асинхронной лямбде вы вызываете Wait наTask task
. Но все же у меня нет объяснений. - person Mario S   schedule 24.10.2012await
сWait()
. Во многих случаях это может привести к тупикам. - person svick   schedule 24.10.2012await
сWait()
- person kennyzx   schedule 25.10.2012