【发布时间】:2020-08-01 22:32:37
【问题描述】:
我有一个创建 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;
}
【问题讨论】:
-
“插入 5 秒的延迟”到底是什么意思?任务本质上是异步的;如果可能,它们将并行运行。您究竟希望延迟发生在哪里?
-
我知道想要这个似乎有点疯狂。我有一个正在读取的队列,因为所有五个任务一起运行,它们都读取数据库中的相同记录。没有完全重新设计和了解队列应该如何工作,我只想要一个延迟,这样我就可以读取和处理一堆记录,然后读取下一批,等等。我想我只有五个进程开始读取并很快更新我的数据库,但我并没有考虑清楚!也许我应该放弃 Task/async/await 并同步执行。谢谢
-
@ScottG 我认为你应该问一个关于你真正想要做什么的新问题。 XY-问题。
标签: c# async-await