MultiThreading WebBrowser Control C # STA [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Control WebBrowser en un nuevo hilo 4 respuestas

Quiero hacer 3 hilos que cada uno ejecute el control WebBroswer. Así que me gustaría usar el ThreadPool para facilitar las cosas.

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

Pero recibo un error que dice que necesito un subproceso STA que nunca será el ThreadPool. Antes de probar este método intenté esto.

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

Y todos los WebBrowsers se iniciaron y todo se ve bien, pero solo uno más dos realmente hará cualquier cosa y nunca es consistente. Hilo ha sido una pesadilla. ¿Alguien puede sugerir una buena alternativa?

Respuestas a la pregunta(4)

Su respuesta a la pregunta