Questo articolo: http://msdn.microsoft.com/msdnmag/issues/04/10/NETMatters/, mostra come è possibile attendere la terminazione di un pool di thread. Viene fornita anche una classe di esempio, ThreadPoolWait, che rende il tutto ancora più semplice. Non è recentissimo, ma a me è stato di grande aiuto.