Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme avec les threads

3 réponses
Avatar
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

3 réponses

Avatar
Gilles TOURREAU
Le Tue, 31 Jul 2007 12:19:57 +0200, ginoo a écrit:

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
Avatar
ginoo
Gilles TOURREAU a écrit :
Le Tue, 31 Jul 2007 12:19:57 +0200, ginoo a écrit:

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.
Avatar
ginoo
Gilles TOURREAU a écrit :
Le Tue, 31 Jul 2007 12:19:57 +0200, ginoo a écrit:

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é