C# 使用线程从控制台应用程序调用web服务

C# 使用线程从控制台应用程序调用web服务,c#,multithreading,C#,Multithreading,我必须在控制台应用程序中使用线程调用web服务(每个调用都在线程上)。线程数最初为5,将来可能会更改,即更改线程数我必须使用app.config。我面临的问题是,我必须在循环3个表时调用web服务,并且表数据不受限制 foreach (DataRow rowclient in ds.Tables[0].Rows) { foreach (DataRow rowN in ds.Tables[1].Rows) { foreach (DataRow rowD in ds.

我必须在控制台应用程序中使用线程调用web服务(每个调用都在线程上)。线程数最初为5,将来可能会更改,即更改线程数我必须使用app.config。我面临的问题是,我必须在循环3个表时调用web服务,并且表数据不受限制

foreach (DataRow rowclient in ds.Tables[0].Rows)
{
    foreach (DataRow rowN in ds.Tables[1].Rows)
    {
        foreach (DataRow rowD in ds.Tables[2].Rows)
        {
            poolThread[i] = new Thread(CallP);
            System.Threading.Thread.Sleep(25);
            poolThread[i].Start();
            i++;
            //check whether there is any thread available in pool

        }
其中,
CallP
是调用Web服务的实际方法,我必须等待线程,直到一个线程被释放

现在我犯了一个错误

索引超出了数组的边界


我是线程新手,请帮帮我。

错误在哪里抛出?您在哪里初始化
poolThread
集合?这是解决问题的一种非常过时的方法。。。考虑.NET的任务并行库(TPL)。特别是您应该使用TPL之类的东西,以便在<代码>聚合异常> /代码>下可以正确地冒泡多个异常。您正在研究的这种方法是有风险的,并且可能是线程不安全的。哪一行抛出IndexOutOfBoundException?你能发一张MCVE吗?