考慮這一點,不能等待異步拉姆達
Task task = new Task (async() =>{
await TaskEx.Delay(1000);
});
task.Start();
task.Wait();
調用task.Wait()不會等待任務完成,並在下一行立即執行,但如果我換了異步lambda表達式成方法調用,代碼按預期工作。
private static async Task AwaitableMethod()
{
await TaskEx.Delay(1000);
}
然後
await AwaitableMethod();
在'AwaitableMethod'你實際上是返回,並呼籲等待任務從.Delay返回()方法(我假設它返回一個'Task')。在異步lambda中,你在'Task task'上調用Wait。但是,我仍然沒有解釋。 –
你應該非常小心地把'await'和'Wait()'混合在一起。在很多情況下,這可能導致死鎖。 – svick
@svick發現一個很棒的[示例](http://stackoverflow.com/a/11179035/815938)關於混合'await'與'Wait()' – kennyzx