首页 > 解决方案 > 每个并行运行复杂吗?

问题描述

我有一些复杂的 foreach 循环。由于 Web 服务器抛出 529,我必须对每 100 个连接进行限制,而且我知道同时我的限制会搞砸。

有没有办法让它并行运行,并且仍然可以正常工作?我才刚刚开始涉足并行编程,但我认为我不知道解决这个问题的方法。

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

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

    ProcessId(userId, file);
}

进程号:

static async void ProcessId(long userId, string file)
{
    var username = await Utilities.GetUsernameFromId(userId);
    FileUtilities.WriteUsernameToFile(username, file);
    IdItemsProcessed++;
}

方法 GetUsernameFromId 是实际挂起的方法,我并行运行的理由是希望加快这一速度,我有超过 100 万个 ID 需要处理,以这种速度,我会永远花时间。

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

标签: c#.netparallel-processing

解决方案


推荐阅读