如何在List of Task <int>?</int>之间插入延迟

时间:2015-03-11 20:28:11

标签: c# async-await

我有一个创建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 个答案:

答案 0 :(得分:3)

 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);
 }

取决于你想要的。

答案 1 :(得分:0)

如果您希望任务一个接一个地运行,延迟时间为5秒,您应该查看Task.ContinueWith而不是Task.WhenAll。这将允许您以串行方式而不是并行方式运行任务。