Cât de mult aveți nevoie să impuneți asupra firelor? Dacă aveți nevoie doar de toate lucrările începute în bucla pentru a termina înainte de a continua codul, dar nu vă interesează ordinea în care lucrarea din cadrul bucla se încheie, atunci apelarea Join este răspunsul. Pentru a adăuga mai multe detalii la răspunsul lui Kevin Kenny, ar trebui să apelați Alăturați-vă în afara buclă. Aceasta înseamnă că veți avea nevoie de o colecție pentru a menține referințe la firele pe care le-ați început:
// 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();
}
În schimb, dacă ați apelat la Alăturați-vă în interiorul bucla, rezultatul ar fi în principiu același ca și cum nu ați folosi firele deloc. Fiecare iterație a corpului de buclă ar crea și începe un fir, dar apoi imediat se alăture și așteptați să termine.
Dacă firele individuale produc un rezultat (scrieți un mesaj într-un jurnal, de exemplu), atunci mesajele pot părea incomode, deoarece nu există o coordonare între fire. Este posibil ca firele să obțină rezultatele în ordine, coordonându-le cu un monitor.