In your lambda example, when you call task.Wait()
, you are waiting on the new Task that you constructed, not the delay Task that it returns. To get your desired delay, you would need to also wait on the resulting Task:
Task<Task> task = new Task<Task>(async () => {
await Task.Delay(1000);
});
task.Start();
task.Wait();
task.Result.Wait();
You could avoid constructing a new Task, and just have one Task to deal with instead of two:
Func<Task> task = async () => {
await TaskEx.Delay(1000);
};
task().Wait();
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…