Я использую ThreadPool для постановки в очередь 1000 рабочих элементов
While(reading in data for processing)
{
args = some data that has been read;
ThreadPool.QueueUserWorkItem(new WaitCallback(threadRunner), args);
}
Это работает очень хорошо, однако, поскольку основной поток ставит запросы в очередь быстрее, чем они обрабатываются, память медленно расходуется.
Я хотел бы сделать что-то похожее на следующее, чтобы ограничить очередь по мере роста очереди
Thread.Sleep(numberOfItemsCurrentlyQueued);
Это приведет к более длительному ожиданию по мере роста очереди.
Есть лиЕсть ли способ узнать, сколько элементов в очереди?