Как я могу вставить задержку между списком задач<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, Это позволит вам запускать задачи последовательно, а не параллельно.

Другие вопросы по тегам