小编sve*_*and的帖子

等待Task.Delay()与Task.Delay().等待()

在C#中,我有以下两个简单的例子:

[Test]
public void TestWait()
{
    var t = Task.Factory.StartNew(() =>
    {
        Console.WriteLine("Start");
        Task.Delay(5000).Wait();
        Console.WriteLine("Done");
    });
    t.Wait();
    Console.WriteLine("All done");
}

[Test]
public void TestAwait()
{
    var t = Task.Factory.StartNew(async () =>
    {
        Console.WriteLine("Start");
        await Task.Delay(5000);
        Console.WriteLine("Done");
    });
    t.Wait();
    Console.WriteLine("All done");
}
Run Code Online (Sandbox Code Playgroud)

第一个示例创建一个打印"开始"的任务,等待5秒打印"完成",然后结束任务.我等待任务完成,然后打印"全部完成".当我运行测试时,它按预期运行.

第二个测试应该具有相同的行为,除了由于使用async和await而在Task内部等待应该是非阻塞的.但是这个测试只是打印"开始"然后立即"完成所有"和"完成"从未打印.

我不知道为什么我会得到这种行为:S非常感谢任何帮助:)

c# asynchronous task wait async-await

47
推荐指数
1
解决办法
7万
查看次数

标签 统计

async-await ×1

asynchronous ×1

c# ×1

task ×1

wait ×1