 <p>You are using the wrong tools. </p> <p>In .NET 4.0 they introduced the Task Parallel Library. This allows you to do things like use multiple thead pools as well as have parent-child relationships between work items.</p> <p>Start with the Task class, which replaces ThreadPool.QueueUserWorkItem.</p> <p><a href="http://msdn.microsoft.com/en-us/library/system.threading.tasks.task(VS.100).aspx" rel="nofollow noreferrer">http://msdn.microsoft.com/en-us/library/system.threading.tasks.task(VS.100).aspx</a></p> <p><strong>EDIT</strong></p> <p>Example of creating your own thread pool using Task and TaskScheduler.</p> <p><a href="http://msdn.microsoft.com/en-us/library/dd997413(VS.100).aspx" rel="nofollow noreferrer">http://msdn.microsoft.com/en-us/library/dd997413(VS.100).aspx</a></p>