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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.