Wielowątkowość WebBrowser Control C # STA [duplikat]
To pytanie ma już tutaj odpowiedź:
Kontrola WebBrowser w nowym wątku 4 odpowiedziChcę utworzyć 3 wątki, z których każdy uruchamia kontrolę WebBroswer. Chciałbym więc użyć Puli wątków, aby ułatwić sobie pracę.
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);
}
Ale pojawia się błąd mówiący, że potrzebuję wątku STA, którego nigdy nie będzie. Przed wypróbowaniem tej metody spróbowałem tego.
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();
}
Wszystkie WebBrowsers zostały zainicjowane, a wszystko wygląda dobrze, ale tylko jedna druga faktycznie zrobi wszystko i nigdy nie będzie spójna. Nawlekanie było takim koszmarem. Czy ktoś może zaproponować miłą alternatywę?