Ci sono vari modi per ottenere quello che voi. Sicuramente quello di cepu96 è il peggiore
Vediamo di dire qualcuno di giusto:
1. Utilizzi un array di oggetti di tipo AutoResentEvent(lo chiamo AUR) o ManualResetEvent dove ogni thread setta uno specifico oggetto AUR. Per verificare se tutti hanno finito chiami questo metodo

2.Utilizzi il metodo Join

3. Utilizzi un oggetto Semaphore

I primi due sono i piu adatti per questo scopo.