Rozważ to,nie może czekać asynchroniczny lambda
Task task = new Task (async() =>{
await TaskEx.Delay(1000);
});
task.Start();
task.Wait();
The task.Wait call() nie czeka na realizację zadań i następnej linii jest wykonywana natychmiast, ale jeśli mogę zawinąć wyrażenia lambda do asynch wywołanie metody, kod działa zgodnie z oczekiwaniami.
private static async Task AwaitableMethod()
{
await TaskEx.Delay(1000);
}
następnie (zaktualizowane zgodnie komentarz od svick)
await AwaitableMethod();
w katalogu 'AwaitableMethod' jesteś rzeczywiście powrocie i nazywając oczekiwania na zadanie wrócił z .Delay() (zakładam, że zwraca 'zadanie'). W asynchronicznej wartości lambda, którą wywołujesz, czekaj w "Zadaniu zadania". Ale wciąż nie mam żadnego wyjaśnienia. –
Powinieneś być bardzo ostrożny przy mieszaniu 'await' z' Czekaj() '. W wielu przypadkach może to prowadzić do zakleszczeń. – svick
@svick znalazł świetny [przykład] (http://stackoverflow.com/a/11179035/815938) o mieszaniu 'await' z' Wait() ' – kennyzx