Método de ejecución de C # (con parámetros) con ThreadPool

Tenemos el siguiente fragmento de código (la idea para este código se encontró en este sitio web) que generará nuevos hilos para el método "Do_SomeWork ()". Esto nos permite ejecutar el método varias veces de forma asincrónica.

El codigo es:

    var numThreads = 20;
    var toProcess = numThreads;

    var resetEvent = new ManualResetEvent(false);

    for (var i = 0; i < numThreads; i++)
    {
        new Thread(delegate()
        {
            Do_SomeWork(Parameter1, Parameter2, Parameter3);
            if (Interlocked.Decrement(ref toProcess) == 0) resetEvent.Set();
        }).Start();
    }

    resetEvent.WaitOne();

Sin embargo, nos gustaría utilizar ThreadPool en lugar de crear nuestros propios hilos nuevos que pueden ser perjudiciales para el rendimiento. La pregunta es cómo podemos modificar el código anterior para hacer uso de ThreadPool teniendo en cuenta que el método "Do_SomeWork" toma múltiples parámetros y también tiene un tipo de retorno (es decir, el método no es nulo).

Además, este es C # 2.0.

Respuestas a la pregunta(2)

Su respuesta a la pregunta