Rafraichissement Doevents en VB.NET [Résolu]

Signaler
Messages postés
38
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
14 mars 2007
-
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
-
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 ?



Merci

10 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
je crois que c'est Application.DoEvents

c'est une commande qui est reprise au moins 1fois pous les 20 posts, donc au pire, regarde dans l'historique ;)
PCPT
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
38
Date d'inscription
jeudi 23 novembre 2000
Statut
Membre
Dernière intervention
14 mars 2007

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.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
ok...
pour ma part, je connais pas .NET et j'ai lu cette comande à moultes reprises....
bonne continuation
PCPT
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
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 ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
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^^
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
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...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
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

espérant que çà t'aide...
PCPT [AFCK]
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
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...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
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...

++
PCPT [AFCK]
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
C'est bon, tout marche, je vous remercie !