Управление многопоточностью WebBrowser C # STA [дубликат]

This question already has an answer here:

WebBrowser Control in a new thread 4 answers

Я хочу сделать 3 потока, каждый из которых запускает элемент управления WebBroswer. Поэтому я хотел бы использовать ThreadPool для упрощения работы.

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);
}

Но я получаю сообщение об ошибке, в котором говорится, что мне нужен поток STA, которым никогда не будет ThreadPool. Прежде чем попробовать этот метод, я попробовал это.

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();
}

И все веб-браузеры инициализированы и все выглядит хорошо, но только еще один из них на самом деле сделает что-нибудь, и это никогда не будет последовательным. Threading был таким кошмаром. Кто-нибудь может предложить хорошую альтернативу?

Ответы на вопрос(4)

Ваш ответ на вопрос