Как я могу вставить задержку между списком задач<int>?
У меня есть цикл, который создает 5 задач. Как я могу вставить задержку 5 секунд между каждой задачей. Я не знаю, как вписать Task.Delay(5000) туда.
var tasks = new List<Task<int>>();
for (var i = 0; i < 5; i++)
{
tasks.Add(ProcessQueueAsync());
}
await Task.WhenAll(tasks);
Мой метод ProcessQueAsync вызывает сервер, получает данные и возвращает и int.
private async Task<int> ProcessQueAsync()
{
var result = await CallToServer();
return result.Count;
}
2 ответа
Решение
for (var i = 0; i < 5; i++)
{
tasks.Add(ProcessQueueAsync());
await Task.Delay(5000);
}
Или же:
for (var i = 0; i < 5; i++)
{
await ProcessQueueAsync();
await Task.Delay(5000);
}
В зависимости от того, что вы хотите.
Если вы хотите, чтобы задачи выполнялись одна за другой с задержкой в 5 секунд, вам, возможно, стоит взглянуть на Task.ContinueWith
Вместо того, чтобы использовать Task.WhenAll
, Это позволит вам запускать задачи последовательно, а не параллельно.