I am using the ThreadPool to queue 1000\'s of workitems
While(reading in data for processing)
{
args = some data that has been read;
ThreadPool.Queue
A more manageable abstraction for Producer/Consumer queue is BlockingCollectionCount
property.
If you can, avoid using Sleep
to delay production of more items. Have the producer wait on an Event or similar when queue gets too large, and have consumer(s) signal the Event when the queue backlog reaches a threshold where you are comfortable allowing more items to be produced. Always try to make things event-driven - Sleep
is a bit of a guess.