matteli
Messages postés38Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention14 mars 2007
-
22 août 2005 à 11:28
remilafouine
Messages postés32Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention11 juin 2007
-
5 nov. 2005 à 22:51
Quelle est la commande en VB.NET qui remplace le "DoEvents" de VB5 pour
permettre de laisser un élément se rafraichir avant de continuer
l'exécution ?
matteli
Messages postés38Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention14 mars 2007 22 août 2005 à 11:44
Merci
Contrairement à ce que l'on pourrait croire, j'ai commencé à regarder
les messages précédents mais je me suis arrêté quand j'ai trouvé un
message traitant de ce sujet sans réponse.
remilafouine
Messages postés32Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention11 juin 20071 28 oct. 2005 à 18:39
Moi, en .Net, il veut pas Application.DoEvents, mais System.Windows.Forms.Application.DoEvents().
Par contre, avec une commande DoEvent, mon programme occupe toute les ressources de mon processeur quand il est lancé... C'est normal qu'un DoEvent prennent autant de puissance de l'UC ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 28 oct. 2005 à 18:53
non !
le DoEvents donne la main au process pour un cours laps de temps. c'est tes opérations avant et après qui doivent le "pomper"....
si c'est pas le cas, bah c'est pas normal du tout^^
remilafouine
Messages postés32Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention11 juin 20071 31 oct. 2005 à 19:44
Je pense peut-être savoir d'ou ca peut venir... disons que j'utilise un DoEvents dans mon appli car j'ai besoin d'un Sleep de valeur 60 secondes. Sans le DoEvents, mon appli se lance, mais c'est comme si les images ne se chargaient pas, comme si toute l'appli se mettait en veille pendant 1 minute...
Voila ce que j'utilisais avant :
Private Sub Form1_Load .....
.....
Thread.Sleep(60000)
.....
End Sub
Maintenant, j'utilise ca :
Friend Sub hbwait(ByVal ms_to_wait As Long)
Dim hb As Double
hb = Environment.TickCount + ms_to_wait
While Environment.TickCount < hb
System.Windows.Forms.Application.DoEvents()
End While
End Sub
et j'ai remplacé mon "Thread.Sleep(60000)" par "hbwait(60000)".
Mon application se lance et marche très bien, mais... elle utilise toutes les performances disponibles de mon processeur.
Savez-vous pourquoi ?
Je peux aussi faire un copier-coller du code entier de la partie ""hbwait(60000)" si vous en avez besoin...
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 31 oct. 2005 à 20:07
salut,
c'est normal, tu entres dans une boucle.
donc pendant une minute, tu vérifies si tu dois sortir. si ne n'est pas le cas, tu redonnes la main au système.
je ne connais pas tes besoins, mais les symptomes que tu décris sont tout à fait normaux et logiques.
(DoEvents n'a pas pour but de faire des pauses...)
et le sleep, quant à lui, ne fait que "freezer" ton appli pendant le temps désiré.
tu pourrais faire un test.... lancer un timer qui ouvrirait un MsgBox au bout de 30 secondes.
timer lancé avant "ta pause". (enabled=true suivi d'un DoEvents pour bien lui laisser le temps).
ton appel de pause juste en ligne suivante.
le MsgBox sera affiché au bout de 90s avec le sleep, tandis qu'il le sera au bout de 30s (+/- puisque le process sera très solicité) avec ta boucle DoEvents
remilafouine
Messages postés32Date d'inscriptionjeudi 20 janvier 2005StatutMembreDernière intervention11 juin 20071 1 nov. 2005 à 10:41
Ben... j'ai plus ou moins déjà essayé avec un Timer, mais ca a fait planté mon PC...
Le but de ce programme, c'est de lancer une commande Dos avec un Shell toutes les X minutes, où X est la valeur d'un NumericUpDown. Comme les timers et les "Sleep" sont limités à des valeurs max de 1 min (je crois...), je fais une boucle en incrémentant une valeur A de 1 à chaque fois, pour arriver à la valeur X. Quand cette valeur est atteinte, mon appli lance la commande Dos.
La dernière fois que j'ai utilisé un Timer, j'ai eu... un... assez gros problème... Mon appli n'a pas respecté l'intervalle de 1 minute, et a lancé une infinité de commande Dos, ce qui a totalement planté mon PC... résultat de l'expérience : reset...
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 1 nov. 2005 à 11:52
salut,
en utilisant des timers, tu peux très bien cumuler (les imbriquer.... mais pas propre).
tu peux également en créer un toi-même avec SetTimer et KillTimer. là tu pourras avoir un interval en long,
donc > 1minute (2^32 ms)
tu peux jeter un oeil à ma source "timer ocx" si tu veux, mais c'est du VB6...