В С# у меня есть следующие два простых примера:
[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");
}
В первом примере создается задача, которая печатает "Старт", ждет 5 секунд печати "Готово", а затем завершает задачу. Я жду завершения задачи и затем распечатаю "Все сделано". Когда я запускаю тест, он делает так, как ожидалось.
Второй тест должен иметь такое же поведение, за исключением того, что ожидание внутри задачи должно быть неблокирующим из-за использования async и ожидания. Но этот тест просто печатает "Старт", а затем сразу "Все сделано" и "Готово" никогда не печатается.
Я не знаю, почему я получаю такое поведение: S Любая помощь будет очень признательна:)