Ich möchte 3 Threads erstellen, die jeweils das WebBroswear-Steuerelement ausführen. Also würde ich gerne den ThreadPool verwenden, um Dinge einfacher zu machen.MultiThreading WebBrowser-Steuerelement C# STA
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 erhalte eine Fehlermeldung, dass ich einen STA-Thread muß, die der Threadpool wird es nie sein. Bevor ich diese Methode ausprobiert habe, habe ich das 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 WebBrowsern alle initialisiert und alles sieht gut aus, aber nur noch ein zwei tut eigentlich alles und es ist nie überhaupt consistant. Threading war so ein Albtraum. Kann jemand eine nette Alternative vorschlagen?
Warum wollen Sie mehrere Seiten laden? Benötigen Sie einen WebBrowser oder würde ein HttpWebRequest funktionieren (z. B. müssen Sie die Seite sehen und/oder benötigen Sie JavaScript auf der Seite zum Ausführen)? Wenn Sie Web Crawling/Scraping durchführen möchten, gibt es effizientere Möglichkeiten. – Chad