NotSupportedException en WaitHandle.WaitAll

Estoy tratando de ejecutar el siguiente código. El código intenta descargar y guardar imágenes paralelamente. Paso una lista de imágenes para descargar. Escribí esto en C # 3.0 y lo compilé usando .NET Framework 4 (VS.NET express edition). La operación WaitAll está dando como resultado unNotSupportedException (WaitAlll para varios identificadores en un subproceso STA no es compatible) Cada vez que intento ejecutar mi programa. Traté de eliminarSetMaxThreads, pero eso no hizo ninguna diferencia.

public static void SpawnThreads(List<string> imageList){
    imageList = new List<string>(imageList);
    ManualResetEvent[] doneEvents = new ManualResetEvent[imageList.Count];
    PicDownloader[] picDownloaders = new PicDownloader[imageList.Count];
    ThreadPool.SetMaxThreads(MaxThreadCount, MaxThreadCount);
    for (int i = 0; i < imageList.Count; i++) {
        doneEvents[i] = new ManualResetEvent(false);
        PicDownloader p = new PicDownloader(imageList[i], doneEvents[i]);
        picDownloaders[i] = p;
        ThreadPool.QueueUserWorkItem(p.DoAction);
    }
    // The following line is resulting in "NotSupportedException"     
    WaitHandle.WaitAll(doneEvents);
    Console.WriteLine("All pics downloaded");
}

¿Puede por favor dejarme entender cuál es el problema con el que me estoy encontrando?

Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta