probleme avec les threads

Le
ginoo
Moi j'ai un probleme au niveau de mon application qui doit récuperer une
page web dans un thread.


private void iPToolStripMenuItem_Click(object sender, EventArgs e)
{
Thread newThread = new Thread(ThreadMethod);
newThread.SetApartmentState(ApartmentState.STA);
newThread.Name = "Processus";
newThread.Start();
}

private void ThreadMethod()
{
PageWeb maPageWeb = new PageWeb();
while (!maPageWeb.getState())
{
//MessageBox.Show(maPageWeb.getState().ToString());
Thread.Sleep(500);
}
MessageBox.Show(monIP.getIP());
}

public class pageWeb
{
private string sPage;
private bool state;
WebBrowser wbPage = new WebBrowser();

public pageWeb()
{
state = false;
wbPage.DocumentCompleted += new
WebBrowserDocumentCompletedEventHandler(wbDocumentCompleted);
wbPage.Navigate("http://www.monsite.com/page.php");
}

void wbPage_DocumentCompleted(object sender,
wbDocumentCompletedEventArgs e)
{
sPage = wbPage.DocumentText;
if (sPage.Length > 0)
state = true;
}

public bool getState()
{
return state;
}

public string getPage()
{
return sPage;
}
}
}

Mon problème est que mon application boucle sans jamais m'afficher le
contenu de la page. Sauf quand je décommente la ligne
MessageBox.Show(maPageWeb.getState().ToString());
Là je récupère bien le contenu de la page
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU
Le #12127891
Le Tue, 31 Jul 2007 12:19:57 +0200, ginoo
Moi j'ai un probleme au niveau de mon application qui doit récuperer une
page web dans un thread.


private void iPToolStripMenuItem_Click(object sender, EventArgs e)
{
Thread newThread = new Thread(ThreadMethod);
newThread.SetApartmentState(ApartmentState.STA);
newThread.Name = "Processus";
newThread.Start();
}

private void ThreadMethod()
{
PageWeb maPageWeb = new PageWeb();
while (!maPageWeb.getState())
{
//MessageBox.Show(maPageWeb.getState().ToString());
Thread.Sleep(500);
}
MessageBox.Show(monIP.getIP());
}

public class pageWeb
{
private string sPage;
private bool state;
WebBrowser wbPage = new WebBrowser();

public pageWeb()
{
state = false;
wbPage.DocumentCompleted += new
WebBrowserDocumentCompletedEventHandler(wbDocumentCompleted);
wbPage.Navigate("http://www.monsite.com/page.php");
}

void wbPage_DocumentCompleted(object sender,
wbDocumentCompletedEventArgs e)
{
sPage = wbPage.DocumentText;
if (sPage.Length > 0)
state = true;
}

public bool getState()
{
return state;
}

public string getPage()
{
return sPage;
}
}
}

Mon problème est que mon application boucle sans jamais m'afficher le
contenu de la page. Sauf quand je décommente la ligne
MessageBox.Show(maPageWeb.getState().ToString());
Là je récupère bien le contenu de la page



Le contrôle WebBrowser doit être présent sur un Form pour fonctionner (et
visible)...
Le contrôle WebBrowser gère automatiquement un Thread qui récupère un page
lors de l'appel à Navigate()... Vous n'avez donc pas à vous soucier de
çà...

Si dans votre cas vous souhaitez récupérer une page par programmation pour
en faire un traitement spécifique, regardez du coté de HttpWebRequest et
HttpWebResponse pour réaliser des demandes HTTP...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
ginoo
Le #12127821
Gilles TOURREAU a écrit :
Le Tue, 31 Jul 2007 12:19:57 +0200, ginoo
Moi j'ai un probleme au niveau de mon application qui doit récuperer une
page web dans un thread.


private void iPToolStripMenuItem_Click(object sender, EventArgs e)
{
Thread newThread = new Thread(ThreadMethod);
newThread.SetApartmentState(ApartmentState.STA);
newThread.Name = "Processus";
newThread.Start();
}

private void ThreadMethod()
{
PageWeb maPageWeb = new PageWeb();
while (!maPageWeb.getState())
{
//MessageBox.Show(maPageWeb.getState().ToString());
Thread.Sleep(500);
}
MessageBox.Show(monIP.getIP());
}

public class pageWeb
{
private string sPage;
private bool state;
WebBrowser wbPage = new WebBrowser();

public pageWeb()
{
state = false;
wbPage.DocumentCompleted += new
WebBrowserDocumentCompletedEventHandler(wbDocumentCompleted);
wbPage.Navigate("http://www.monsite.com/page.php");
}

void wbPage_DocumentCompleted(object sender,
wbDocumentCompletedEventArgs e)
{
sPage = wbPage.DocumentText;
if (sPage.Length > 0)
state = true;
}

public bool getState()
{
return state;
}

public string getPage()
{
return sPage;
}
}
}

Mon problème est que mon application boucle sans jamais m'afficher le
contenu de la page. Sauf quand je décommente la ligne
MessageBox.Show(maPageWeb.getState().ToString());
Là je récupère bien le contenu de la page



Le contrôle WebBrowser doit être présent sur un Form pour fonctionner
(et visible)...
Le contrôle WebBrowser gère automatiquement un Thread qui récupère un
page lors de l'appel à Navigate()... Vous n'avez donc pas à vous soucier
de çà...

Si dans votre cas vous souhaitez récupérer une page par programmation
pour en faire un traitement spécifique, regardez du coté de
HttpWebRequest et HttpWebResponse pour réaliser des demandes HTTP...

Cordialement

--Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Oui effectivement après récupération de la page je dois traiter certaines informations. Le contrôle
ne doit pas être visible.
ginoo
Le #12127811
Gilles TOURREAU a écrit :
Le Tue, 31 Jul 2007 12:19:57 +0200, ginoo
Moi j'ai un probleme au niveau de mon application qui doit récuperer une
page web dans un thread.


private void iPToolStripMenuItem_Click(object sender, EventArgs e)
{
Thread newThread = new Thread(ThreadMethod);
newThread.SetApartmentState(ApartmentState.STA);
newThread.Name = "Processus";
newThread.Start();
}

private void ThreadMethod()
{
PageWeb maPageWeb = new PageWeb();
while (!maPageWeb.getState())
{
//MessageBox.Show(maPageWeb.getState().ToString());
Thread.Sleep(500);
}
MessageBox.Show(monIP.getIP());
}

public class pageWeb
{
private string sPage;
private bool state;
WebBrowser wbPage = new WebBrowser();

public pageWeb()
{
state = false;
wbPage.DocumentCompleted += new
WebBrowserDocumentCompletedEventHandler(wbDocumentCompleted);
wbPage.Navigate("http://www.monsite.com/page.php");
}

void wbPage_DocumentCompleted(object sender,
wbDocumentCompletedEventArgs e)
{
sPage = wbPage.DocumentText;
if (sPage.Length > 0)
state = true;
}

public bool getState()
{
return state;
}

public string getPage()
{
return sPage;
}
}
}

Mon problème est que mon application boucle sans jamais m'afficher le
contenu de la page. Sauf quand je décommente la ligne
MessageBox.Show(maPageWeb.getState().ToString());
Là je récupère bien le contenu de la page



Le contrôle WebBrowser doit être présent sur un Form pour fonctionner
(et visible)...
Le contrôle WebBrowser gère automatiquement un Thread qui récupère un
page lors de l'appel à Navigate()... Vous n'avez donc pas à vous soucier
de çà...

Si dans votre cas vous souhaitez récupérer une page par programmation
pour en faire un traitement spécifique, regardez du coté de
HttpWebRequest et HttpWebResponse pour réaliser des demandes HTTP...

Cordialement

--Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Je viens de faire un essai avec exemple trouvé sur le net en utilisant comme vous me le conseillez
HttpWebRequest et HttpWebResponse. Et effectivement, je récupère ma page sans problème. J'aimerai
savoir si vous aviez un ou plusieurs sites à part les msdn de microsoft qui parle de ces classes et
de toutes leurs possiblité.
En tout cas merci de m'avoir débloqué
Publicité
Poster une réponse
Anonyme