NotSupportedException on WaitHandle.WaitAll
Ich versuche den folgenden Code auszuführen. Der Code versucht, parallel Bilder herunterzuladen und zu speichern. Ich übergebe eine Liste der herunterzuladenden Bilder. Ich habe dies in C # 3.0 geschrieben und mit .NET Framework 4 (VS.NET Express Edition) kompiliert. Die WaitAll-Operation führt zu einemNotSupportedException (WaitAlll für mehrere Handles in einem STA-Thread wird nicht unterstützt) Jedes Mal, wenn ich versuche, mein Programm auszuführen. Ich habe versucht, @ zu entfernSetMaxThreads
, aber das hat keinen Unterschied gemacht.
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");
}
Können Sie mir bitte mitteilen, auf welches Problem ich stoße?
Vielen Dan