2013-04-18 33 views
0

因此,我正在谈论一个需要我为所订阅的每个事件调用保持活动方法的Web服务。这可以在任何给定的时间达到400个事件。.NET ThreadPool为什么滞后?

目前我使用System.Timers.Timer没有间隔运行。 问题是这似乎吃掉了我的ThreadPool,因为如果我尝试使用ThreadPool.QueueWorkersItem()运行某些内容,它可能需要长达20秒才能在它排队后运行。

任何想法如何运行我的keep-alive调用运行,而不消耗线程池?

BR托马斯

+3

你是否每次都在一个新线程上执行“保持活力”方法?为什么不只是一个专门的呢? – Fredrik

回答

1

这取决于它需要你有多少,你需要多久调用保活方法这些事件的,多久打这通电话。 ThreadPool.QueueUserWorkItem要去队列要执行的方法。如果所有的线程池线程都被占用,你的工作项目将不得不等待一个线程被释放。对于之前排队的所有其他项目。

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

相关问题