<p>I have a threading issue,</p>

<p>I'm setting the <code>ThreadPool.SetMaxThreads(maxThreads, System.Environment.ProcessorCount)</code> to 10.</p>

<p>But when I check how many are avaliable <code>ThreadPool.GetAvailableThreads()</code> it says there are (maxThreads - 1) so 9, but then goes on to use 10 threads.</p>

<p>Any ideas why this is?</p>

<p>Thanks for the help.</p>

In an ideal world, we would have 1 thread/physical core. That way, we would no longer have context switches, which are rather costly operations. But until we have processors with hundreds of cores, that won't be practical.
Anyway, as Marc suggested, you shouldn't mess with the ThreadPool parameters unless you REALLY know what you are doing. The logic behind the .Net implementation of the ThreadPool is rather good, and it can successfully handle most scenarios.