Liang Yichen

Programing C# & Javascript | Photographic & Cinematograpic

这个例子与 Javascript 的 异步 await 执行顺序 相同,await 必须定义在 async 函数中.


async Task AF()
{
    await Task.Delay(2000); //一个非常耗时的运算
    Console.WriteLine($"3");
}


async Task uaw()
{
    Console.WriteLine($"2");

    await AF();

    Console.WriteLine($"4");
}



Console.WriteLine($"1");

uaw();

Console.WriteLine($"5");


Console.ReadLine();


以上代码输出:1 2 5 3 4 , 其中3 和4会在5输出·之后的两秒钟后才会输出。

一一分解输出步骤:

简单总结:await 不仅仅是“等待”,而且会立即“返回”,并且把剩余的代码转移到另外线程中运行。

最后的重点:最外层的启动命令:uaw(); 本身没有 await , 如果加了 await 的话,会输出 1 2 3 4 5, 那就没有任何意义了。


©Liang Yichen