OVH Cloud OVH Cloud

comportement bizarre de thread.sleep

1 réponse
Avatar
Thibaut_76
Bonjour,

Je ne comprend pas pourquoi quand on ecrit le code suivant:

label.text="hello";
Thread.sleep(5000);
label.text="world";

le "hello" n'est pas affiche !!??
le sleep fonctionne et "world" est affiche ensuite....

Si quelqu'un a une reponse ca m'interesse...

merci

Thibaut

1 réponse

Avatar
Remi Thomas - MVP
"Thibaut_76"
Bonjour,

Je ne comprend pas pourquoi quand on ecrit le code suivant:

label.text="hello";
Thread.sleep(5000);
label.text="world";

le "hello" n'est pas affiche !!??
le sleep fonctionne et "world" est affiche ensuite....

Si quelqu'un a une reponse ca m'interesse...

merci

Thibaut




Bonjour,

Windows fonctionne avec une pompe à message qui fonctionne dans le même
thread que le tiens.
Qaund tu fais label.text = "hello" tu envoies en réalité un message à la
fênetre "label".
Il faut donner la main à la pompe à message pour qu'elle dépile cela.
Tu peux le faire avec une boucle du genre

DateTime completeTime = DateTime.Now.AddSeconds(5);
while (DateTime.Now < completeTime)
{
System.Threading.Thread.Sleep(10); // Laisser dormir l'appli
Application.DoEvents(); // Déplier les messages
}

Après il est préférable de ne pas utiliser DoEvents et d'essayer de designer
son application en mode événementielle.

Rémi