Je souhaite créer 3 threads qui exécutent chacun le contrôle WebBroswer. Donc, je voudrais utiliser le ThreadPool pour rendre les choses faciles.MultiThreading WebBrowser Control 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);
}
Mais je reçois une erreur disant que je besoin d'un thread STA qui le ThreadPool ne sera jamais. Avant d'essayer cette méthode, j'ai essayé cela.
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();
}
Et les webbrowsers tout initialisé et tout semble bon, mais seulement un de plus de deux fera quoi que ce soit et son tout jamais cohérente. Threading a été un tel cauchemar. Quelqu'un peut-il suggérer une bonne alternative?
Pourquoi voulez-vous de charger plusieurs pages à la fois? Avez-vous besoin d'un WebBrowser ou d'un travail HttpWebRequest (par exemple avez-vous besoin de voir la page et/ou avez-vous besoin de JavaScript sur la page pour s'exécuter)? Si vous cherchez à faire de l'exploration/grattage Web, il existe des moyens plus efficaces. – Chad