Rafraichissement Doevents en VB.NET

Résolu
matteli Messages postés 38 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 14 mars 2007 - 22 août 2005 à 11:28
remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 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 ?



Merci

10 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 août 2005 à 11: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
matteli Messages postés 38 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 14 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.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 août 2005 à 11:52
ok...
pour ma part, je connais pas .NET et j'ai lu cette comande à moultes reprises....
bonne continuation
PCPT
0
remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 juin 2007 1
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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^^
0
remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 juin 2007 1
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...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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

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

++
PCPT [AFCK]
0
remilafouine Messages postés 32 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 11 juin 2007 1
5 nov. 2005 à 22:51
C'est bon, tout marche, je vous remercie !
0
Rejoignez-nous