У меня есть следующий код
class Program
{
public async Task<bool> StartMyTask()
{
await Foo();
return true;
}
public async Task<bool> Foo()
{
for (int i = 0; i < 1000000; i++)
{
Console.WriteLine("Loop");
}
return true;
}
static void Main(string[] args)
{
Program obj = new Program();
var myTask = obj.StartMyTask();
Console.WriteLine("Before Task Return");
Console.ReadLine();
}
}
Согласно моему пониманию, когда вызывается "await Foo ()", будет создан поток, который будет выполнять метод "Foo ()", и элемент управления будет возвращен вызывающей стороне (метод Main).
Учитывая это, перед выполнением метода Foo () необходимо напечатать «Перед возвратом задачи». Но этого не происходит, сначала метод «Foo ()» завершается, а затем отображается «Перед возвратом задачи».