MultiThreading WebBrowser Control C # STA [duplizieren]

Diese Frage hat hier bereits eine Antwort:

WebBrowser-Steuerelement in einem neuen Thread 4 Antworten

Ich möchte 3 Threads erstellen, die jeweils das WebBroswer-Steuerelement ausführen. Daher möchte ich den ThreadPool verwenden, um die Dinge zu vereinfachen.

for(int i = 0;i < 3;i++)
{
   ThreadPool.QueueUserWorkItem(new WaitCallback(gotoWork), i));
}
WaitAll(waitHandles);

...... /

void gotoWork(object o)
{
   string url = String.Empty;
   int num = (int)o;
   switch(num)
   {
     case 0:
       url = "google.com";
       break;
     case 1:
       url = "yahoo.com";
       break;
     case 2:
       url = "bing.com";
       break;
   }
   WebBrowser w = new WebBrower();
   w.Navigate(url);
}

Aber ich bekomme eine Fehlermeldung, dass ich einen STA-Thread benötige, der niemals der ThreadPool sein wird. Bevor ich diese Methode ausprobierte, habe ich es versucht.

Thread[] threads = Thread[3];
for(int i = 0;i < 3;i++)
{
    threads[i] = new Thread(new ParameterizedStart(gotoWork);
    threads[i] = SetApartmentState(ApartmentState.STA); //whoo hoo
    threads[i] = Start();
}
for(int i = 0; i < 3;i++)
{
    threads[i].Join();
}

Und die WebBrowser sind alle initialisiert und alles sieht gut aus, aber nur einer von zwei macht tatsächlich etwas und es ist überhaupt nie konsistent. Threading war so ein Albtraum. Kann jemand eine nette Alternative vorschlagen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage