我必须使用 C# 并行调用多个不同的 Web 服务

I have to call multiple different web services in parallel using C#

我有一个要求,需要向不同服务器上托管的不同 Web 服务发送多个并行调用。我必须阅读配置文件才能知道必须进行多少次调用。假设有 4 台服务器,每台服务器上都有一个 Web 服务。配置的值为 4 那么我必须并行调用每个服务 4 次。总调用次数为 16。这是我完成的代码:

string XmlFile = ConfigurationManager.AppSettings["XMLFile"].ToString();
            int num = Convert.ToInt16(ConfigurationManager.AppSettings["NumberOfCalls"]);

Service service1 = new InfoMsg.Manager.Service();
Service service2 = new InfoMsg.Manager.Service();
Service service3 = new InfoMsg.Manager.Service();
Service service4 = new InfoMsg.Manager.Service();

string xmlString = System.IO.File.ReadAllText(XmlFile);

if (!string.IsNullOrEmpty(xmlString))
{
    Parallel.For(0, num, i =>
        Parallel.Invoke(() => service1.CheckInXML(xmlString), 
                        () => service2.CheckInXML(xmlString), 
                        () => service3.CheckInXML(xmlString), 
                        () => service4.CheckInXML(xmlString))
    );
}

我实际上打了 14 到 16 个电话,所以出了点问题。这是正确的做法吗?

要回答这个问题,删除 Parallel.Invoke 就足够了。 Parallel.For 应该完成工作,这就是 Parallel.For 本质上所做的。