jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
12 août 2004 à 21:01
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
13 août 2004 à 00:54
Voila j'appelle un service web de facon asynchrone :
private void button1_Click(object sender, EventArgs e)
{
DownloadFile.Service1 DF = new DownloadFile.Service1();
label8.Text = "Debut : " + DateTime.Now.ToString("T") + " " + DateTime.Now.Millisecond + Convert.ToChar(13) + Convert.ToChar(10);
IAsyncResult iAr = DF.BeginGetCategories(null, null);
while (!iAr.AsyncWaitHandle.WaitOne(100, false))
{
label8.Text += "Chargement des données en cours" + " " + DateTime.Now.ToString("T") + " " + DateTime.Now.Millisecond + Convert.ToChar(13) + Convert.ToChar(10);
//statusStripPanel1.Text = "Chargement des données en cours";
}
L'appelle Asynchrone fonctionne correctement, Dans mon label, j'ai bien une incrementation de 100ms jusqu'a la fin de l'appell mais le problème c'est que mon label s'affiche d'un seul bloque, il attend la fin de l'appel pour m'afficher mon label, alors que le label a bien été completé lors de l'appel asynchrone puisque j'ai :
Chargement des données en cours 14:25:48 850
Chargement des données en cours 14:25:48 950
etc....
mais le label s'affiche en un seul bloque :sad)
il existerais pas une methode a appellé pour qu'il se rafraichisse qd j'en ai envie, c'est à dire dans la boucle ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 12 août 2004 à 22:34
Merci : ca fonctionne
Par un seul bloque, je voulais dire, que
Chargement des données en cours 14:25:48 850
s'affichait en meme temps que
Chargement des données en cours 14:25:49 550
donc encore une fois merci, ca faisait depuis ce matin que ca me tournait autour :)
mais j'aimerais bien comprendre.
pourquoi il faut que je signale au programme de travailler ?
J'ai pas encore cherché d'infos sur Application.DoEvents je vais chercher, mais je trouve ca intrigant
TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 décembre 200723 12 août 2004 à 23:40
LE application.doevents permet en fait de dire au système d'executer les tâches qu'il à dans sa file d'attente, avant que ton thread à toi continue a s'executer.
Le problème dans ta boucle c'est que le système à les tâches de raffraichissement graphique en attente (typiquement celui du label), d'ou le doevents ...