-1

我有一个要求,我需要向不同服务器上托管的不同 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 个电话,所以出了点问题。这是正确的方法吗?

4

1 回答 1

1

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

于 2017-05-10T06:57:26.953 回答