如果我的代码显示:
public async Task Test1()
{
Task task1 = MakeEggAsync();
Task task2 = MakeBaconAsync();
await Task.WhenAll(task1, task2);
}
async Task MakeBaconAsync()
{
while (CookIsBusy)
{
//
await Task.Delay(100);
}
}
async Task MakeEggAsync()
{
await makeEgg2Async();
}
async Task makeEgg2Async()
{
while (CookIsBusy)
{
//
await Task.Delay(100);
}
}
...计算机到达此行后会返回主 Test1()
吗?
async Task MakeEggAsync()
{
await makeEgg2Async();
}
...还是只有在延迟后才会返回?我知道线程只有在您等待后才会返回。 抱歉,我是新手,我正在努力学习。
计算机是在到达 await
后还是在到达 Task.Delay
后返回?这才是我真正想问的。
答案 0 :(得分:1)
Every async
method begins executing synchronously。
此外,等待的是对象,而不是方法。换句话说,这段代码:
async Task MakeEggAsync()
{
await makeEgg2Async();
}
与此代码大致相同:
async Task MakeEggAsync()
{
var task = makeEgg2Async();
await task;
}
因此计算机在调用 Test1
后返回到 Task.Delay
。