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

C# 我必须使用C并行调用多个不同的web服务#,c#,task-parallel-library,parallel.foreach,parallel.for,parallel.invoke,C#,Task Parallel Library,Parallel.foreach,Parallel.for,Parallel.invoke,我需要向托管在不同服务器上的不同web服务发送多个并行调用。我必须阅读一个配置文件才能知道需要调用多少次。假设有4台服务器,每台服务器上承载一个web服务。配置的值是4,然后我必须并行地对每个服务进行4次调用。总共有16个电话。以下是我所做的代码: string XmlFile = ConfigurationManager.AppSettings["XMLFile"].ToString(); int num = Convert.ToInt16(ConfigurationM

我需要向托管在不同服务器上的不同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就足够了。平行。For应该做这个工作,这就是平行。For基本上做的。

当你尝试它时发生了什么?成功了吗?成功了!它起作用了。但我不确定我是否以正确的方式做了这件事,有时电话比我预期的要少。假设num的值是4,那么调用总数应该是16,那个么你们实际得到的是什么,当你们期望得到16的时候,你们是如何衡量你们实际得到的呢?有时是14,有时是16。我正在查fiddler的服务电话。