There is an example in this article: Thread synchronization: Wait and Pulse demystified[^] :-O Your implementation looks correct, but I guess you want to limit the size of the queue at some point, not let it grow to infinity. The implementation in that article also allows you to terminate the queue cleanly. Or you might find something in the recent release of MS Reactive Extensions on DevLabs[^]. It contains an ( unsupported ) back port of the new .NET 4.0 Task Parallel Library for .NET 3.5. I haven't explored it yet, but I would be surprised if it didn't contain the concurrent collection, including BlockingCollection. Nick
---------------------------------- Be excellent to each other :)