C# Execute Method (with Parameters) with ThreadPool
Pretty much the same way, but use a WaitCallback passed to ThreadPool.QueueUserWorkItem:
var numThreads = 20;
var toProcess = numThreads;
var resetEvent = new ManualResetEvent(false);
for (var i = 0; i < numThreads; i++)
{
ThreadPool.QueueUserWorkItem (
new WaitCallback(delegate(object state) {
Do_SomeWork(Parameter1, Parameter2, Parameter3);
if (Interlocked.Decrement(ref toProcess) == 0) resetEvent.Set();
}), null);
}
resetEvent.WaitOne();