为什么.NET ThreadPool会滞后?

时间:2013-04-18 20:00:07

标签: .net multithreading threadpool

所以我正在寻找一个需要我为我正在订阅的每个事件调用保持活动方法的Web服务。在任何给定时间最多可以有400个事件。

目前我正在使用不运行间隔的System.Timers.Timer。 问题是这似乎占用了我的ThreadPool,因为如果我尝试使用ThreadPool.QueueWorkersItem()运行某些东西,它可能需要20秒才能在排队后运行。

知道如何在不吃掉线程池的情况下运行keep-alive调用吗?

BR Tomas

1 个答案:

答案 0 :(得分:1)

这取决于您拥有的事件数量,调用保持活动方法的频率,以及拨打电话所需的时间。 ThreadPool.QueueUserWorkItem队列要执行的方法。如果所有线程池线程都被占用,那么您的工作项将必须等待释放一个线程。对于在它之前排队的所有其他项目。

您可能应该像评论者建议的那样做,并且有一个专门的线程可以持续进行更新,可能是通过异步调用。