0

因此,我正在与一个需要我为我订阅的每个事件调用 keep-alive 方法的 Web 服务交谈。在任何给定时间,最多可以有 400 个事件。

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

知道如何在不占用线程池的情况下运行我的保活调用吗?

BR托马斯

4

1 回答 1

1

这取决于你有多少这些事件,你需要多久调用一次 keep alive 方法,以及调用需要多长时间。ThreadPool.QueueUserWorkItem将要执行的方法排队。如果所有线程池线程都被占用,您的工作项将不得不等待线程被释放。对于在它之前排队的所有其他项目。

您可能应该按照评论者的建议进行操作,并拥有一个专用线程来不断进行更新,可能是通过进行异步调用。

于 2013-04-18T20:50:33.877 回答