整天困扰我的问题是我开始大约200个线程,每个线程都会调用方法,该方法将调用方法中的webservice。
当我打开TCPView时,我只能在客户端进程到WCF服务器之间看到大约20个连接。
我不打算使用PLINQ或ThreadPool,因为每个线程可能需要很长时间才能计算然后返回,
My Client线程部分代码如下:
for (int i = 0; i < inputs.Count(); i++)
{
Thread t = new Thread(new ParameterizedThreadStart(InnerCalculate));
t.Start(new ThreadParameter()
{
Index = i,
Count = inputs.Count
});
threads.Add(t);
Thread.Sleep(200);
}
foreach (Thread thread in threads)
{
thread.Join();
}
行为的服务端配置如下:
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentInstances="6"/>
</behavior>
谁能告诉我哪里错了?或问题可能发生在哪里?谢谢!
答案 0 :(得分:1)
这不仅仅是WCF限制可用的并发连接数吗?你对20的测量只是间接指示发生了什么,你有可能确实拥有完整的200个线程,但一次只能连接20个。