等待与等待 Task.Delay 尝试学习

时间:2021-03-11 18:17:42

标签: c# async-await

如果我的代码显示:

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 后返回?这才是我真正想问的。

1 个答案:

答案 0 :(得分:1)

Every async method begins executing synchronously

此外,等待的是对象,而不是方法。换句话说,这段代码:

async Task  MakeEggAsync()
{
  await makeEgg2Async();
}

与此代码大致相同:

async Task  MakeEggAsync()
{
  var task = makeEgg2Async();
  await task;
}

因此计算机在调用 Test1 后返回到 Task.Delay

相关问题