Actually I use the following to replace WaitHandle.WaitAll(doneEvents);
foreach (var e in doneEvents) e.WaitOne();