C #: esperando que se completen todos los hilos

Me encuentro con un patrón común en el código que estoy escribiendo, donde necesito esperar a que se completen todos los hilos de un grupo, con un tiempo de espera. Se supone que el tiempo de espera es el tiempo requerido paratodas subprocesos para completar, así que simplemente haciendo thread.Join (tiempo de espera) para cada hilo no funcionará, ya que el tiempo de espera posible es el tiempo de espera * numThreads.

Ahora mismo hago algo como lo siguiente:

var threadFinishEvents = new List<EventWaitHandle>();

foreach (DataObject data in dataList)
{
    // Create local variables for the thread delegate
    var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset);
    threadFinishEvents.Add(threadFinish);

    var localData = (DataObject) data.Clone();
    var thread = new Thread(
        delegate()
        {
            DoThreadStuff(localData);
            threadFinish.Set();
        }
    );
    thread.Start();
}

Mutex.WaitAll(threadFinishEvents.ToArray(), timeout);

Sin embargo, parece que debería haber una expresión más simple para este tipo de cosas.

Respuestas a la pregunta(9)

Su respuesta a la pregunta