最佳答案
在 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");
}
第一个示例创建一个打印“ Start”的任务,等待5秒钟打印“ Done”,然后结束该任务。我等待任务完成,然后打印“所有完成”。当我运行测试时,它会按照预期的方式运行。
第二个测试应该具有相同的行为,但是由于使用了异步和等待,Task 内部的等待应该是非阻塞的。但是这个测试只是打印“开始”,然后立即“完成”和“完成”永远不会打印。
我不知道为什么我会有这样的行为: S 任何帮助都将是非常感激的:)