C# 每一个都并行运行?

C# 每一个都并行运行?,c#,.net,parallel-processing,C#,.net,Parallel Processing,我有一些复杂的foreach循环。由于web服务器抛出一个529,我必须对每100个连接进行节流,我知道在并行情况下,我的节流会搞砸 有没有办法让它并行运行,并且仍然可以正常工作?我刚刚开始涉足并行编程,我想我不知道如何解决这个问题 foreach (var userId in IdCollection) { i++; if (i % 100 == 0 && i != 0) { Thread.Sleep(15 * 1000); }

我有一些复杂的foreach循环。由于web服务器抛出一个529,我必须对每100个连接进行节流,我知道在并行情况下,我的节流会搞砸

有没有办法让它并行运行,并且仍然可以正常工作?我刚刚开始涉足并行编程,我想我不知道如何解决这个问题

foreach (var userId in IdCollection)
{
    i++;

    if (i % 100 == 0 && i != 0)
    {
        Thread.Sleep(15 * 1000);
    }

    ProcessId(userId, file);
}
进程ID:

static async void ProcessId(long userId, string file)
{
    var username = await Utilities.GetUsernameFromId(userId);
    FileUtilities.WriteUsernameToFile(username, file);
    IdItemsProcessed++;
}
方法GetUsernameFromId是一个实际挂起的方法,我并行运行的理由是希望加快速度,我要处理的ID超过100万个,以这个速度,我将永远花费时间


它将web客户端运行到服务器,获取响应并将其解析为用户名。非常简单的东西,但当你大量使用时可能会成为一个问题。

你可以使用
Parallel
类,例如
Parallel.Invoke(()=>DoSomeWork(),()=>DoSomeOtherWork())并行是一个确定的问题,我遇到的问题是每100次迭代都要进行并行等待,因为并行当前的工作方式是不可能的。您是否使用foreach循环在单个线程上达到速率限制,并且希望尝试将其并行化?或者这仅仅是一些被提出的逻辑?如果你是速率受限的(429-不知道你所说的状态代码529是什么意思),这意味着你呼叫太频繁,并行化对你没有帮助。它每100个请求抛出529个。不是因为我打电话太频繁。