我目前正通过WCF向2个端点发送信息。在一个场合,一个端点被停止以进行维护。在此期间,我看到我的发送应用程序线程数增加。当端点重新启动时(数小时或数天后),它将收到大量调用,并且发送应用程序上的线程计数将恢复正常。我正在使用以下netTCPBinding,但我没有看到发送应用程序如何缓冲这些请求(从而增加其线程数)。在将信息发送到2个端点时,我确实使用Parallel.ForEach。
<netTcpBinding>
<binding name="HANetTcp" receiveTimeout="00:01:00" sendTimeout="00:00:05">
<security mode="None"/>
</binding>
</netTcpBinding>
答案 0 :(得分:1)
根本原因是TimerCallback与MethodImplOptions.Synchronized一起使用,它以某种方式保存线程引用(并不总是足以耗尽线程池) -