c# – 如何确定ThreadPool队列中的项目数

前端之家收集整理的这篇文章主要介绍了c# – 如何确定ThreadPool队列中的项目数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用ThreadPool来排队1000个工作项
While(reading in data for processing)
{
    args = some data that has been read;
    ThreadPool.QueueUserWorkItem(new WaitCallback(threadRunner),args);
}

然而,这非常有效,因为主线程将请求排队的速度比处理内存的速度慢得多.

我希望做一些类似于以下内容的事情,以便在队列增长时限制排队

Thread.Sleep(numberOfItemsCurrentlyQueued);

随着队列的增长,这会导致更长的等待时间.

有没有办法发现队列中有多少项?

解决方法

我不认为有内置方式,但你可以引入一个会增加/减少的[静态?]计数器;为此你必须创建自己的方法来包装ThreadPool.QueueUserWorkItem()并处理计数器.

顺便说一句,万一你运行.NET 4.0,你应该使用TaskFactory.StartNew而不是ThreadPool.QueueUserWorkItem() – 据说它有更好的内存/线程管理.

猜你在找的C#相关文章