If you have more than 64 wait handles for an STA Thread as Mark says. you could create a list with your threads and wait for all to complete in a second loop.
//check that all threads have completed.
foreach (Thread thread in threadList)
{
thread.Join();
}