¿Cuánto fin Qué se necesita para imponer a los hilos? Si solo necesita que todo el trabajo iniciado en el ciclo finalice antes de que el código continúe, pero no le importa el orden en que finaliza el trabajo dentro del bucle, la respuesta es llamar a Unirse. Para agregar más detalles al Kevin Kenny's answer,, debe llamar al fuera del el bucle. Esto significa que usted tendrá una colección para contener referencias a los hilos de comenzar:
// Start all of the threads.
List<Thread> startedThreads = new List<Thread>();
foreach (...) {
Thread thread = new Thread(new ThreadStart(MyMethod));
thread.Start();
startedThreads.Add(thread);
}
// Wait for all of the threads to finish.
foreach (Thread thread in startedThreads) {
thread.Join();
}
Por el contrario, si se llama Únete dentro del bucle, el resultado sería básicamente la misma que no usar hilos en absoluto. Cada iteración del cuerpo del bucle crearía e iniciaría un hilo, pero luego se uniría inmediatamente y esperaría a que terminara.
Si los subprocesos individuales producen algún resultado (por ejemplo, escribir un mensaje en un registro), los mensajes pueden aparecer desordenados porque no hay coordinación entre los subprocesos. Es posible hacer que los hilos generen sus resultados en orden coordinándolos con un Monitor.