У меня есть следующий код в LINQPad:
async Task Main()
{
await PrintLoop(Print1());
}
async Task Print1()
{
Debug.WriteLine("Printing!");
}
//Print 2
//Print 3
//etc.
async Task PrintLoop(Task printer, int iterations = 3)
{
for (int i = 0; i < iterations; i++)
{
await printer;
}
}
Я не могу на всю жизнь понять, почему я получаю следующий вывод:
Printing!
В отличие от«Печать!»x3.
Если я вызываю Print1()
непосредственно в цикле, я получаю следующий вывод:
Printing!
Printing!
Printing!
Printing!
Какой тип имеет смысл, но не тот, который я хочу сделать. Вместо этого я хотел бы, чтобы Print1
(или какой-либо метод, передаваемый как task
), вызывался iterations
раз.
Может ли кто-нибудь помочь мне понять, что здесь происходит вверх и вниз? Спасибо!