OVH Cloud OVH Cloud

THREAD, faire une pause sans utiliser tout le cpu

2 réponses
Avatar
johann
bonjour,=20

je developpe une petite application qui permet de faire defiler des=20
images. Je me sert de thread.sleep() pour definir le temps entre chaque=20
image.=20

Mon probleme, c'est que je veux mettre un bouton pause qui permet de faire =

une pause dans le defilement, voila mon code:

stp =3D False ' boolean, valeur renvoy=E9e par le bouton stop
run =3D True ' boolean, valeur renvoy=E9e par le bouton pause
For Each filename In fileentries ' boucle sur la liste des=20
fichiers


If stp =3D True Then ' test pour sortie en cas de clic sur=20
bouton stop
Image.Image =3D Nothing ' image est le composant=20
picturebox(je sais, c assez idiot comme non.. ;-))
Exit For
End If
While run =3D False ' prend la main en cas de clic sur bouton=20
pause
System.Windows.Forms.Application.DoEvents()
End While
Image.Image =3D Nothing
Image.Image =3D System.Drawing.Image.FromFile(filename)
Thread.Sleep(HSBar.Value) ' hsbar est une hscrollbar qui=20
permet de modifier le temps d'attente
Image.Refresh()
System.Windows.Forms.Application.DoEvents()
Next

ma procedure marche ainsi que les boutons stop et pause, mais le probleme=20
est que que lorsque le defilement est en pause, la procedre utilise 100%=20
du cpu, je me demandais donc s'il n'etais pas possible de faire quelque=20
chose de moins "gourmand" en utilisant peut etre thread.suspend. Mais il=20
me semble que cette methode ne rend pas la main a l'utilisateur.

2 réponses

Avatar
Zoury
Salut Johann! :O)

j'ai l'impression que c'est cette boucle qui bouffe ton temps CPU.
Essai de mettre une légère pause dans la boucle
'***
While run = False
Thread.Sleep(10)
Application.DoEvents()
End While
'***

Note que ce truc fonctionnait sous VB... mais ça se pourrait que ça ne
fonctionne pas en .NET.

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
johann
merci c'est exactement ce qu'il me fallais