Rafraichissement Doevents en VB.NET [Résolu]

matteli 38 Messages postés jeudi 23 novembre 2000Date d'inscription 14 mars 2007 Dernière intervention - 22 août 2005 à 11:28 - Dernière réponse : remilafouine 33 Messages postés jeudi 20 janvier 2005Date d'inscription 11 juin 2007 Dernière intervention
- 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
Afficher la suite 

10 réponses

Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 22 août 2005 à 11:37
3
Merci
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

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

matteli 38 Messages postés jeudi 23 novembre 2000Date d'inscription 14 mars 2007 Dernière intervention - 22 août 2005 à 11:44
0
Merci
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.
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 22 août 2005 à 11:52
0
Merci
ok...
pour ma part, je connais pas .NET et j'ai lu cette comande à moultes reprises....
bonne continuation
PCPT
remilafouine 33 Messages postés jeudi 20 janvier 2005Date d'inscription 11 juin 2007 Dernière intervention - 28 oct. 2005 à 18:39
0
Merci
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 ?
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 28 oct. 2005 à 18:53
0
Merci
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 33 Messages postés jeudi 20 janvier 2005Date d'inscription 11 juin 2007 Dernière intervention - 31 oct. 2005 à 19:44
0
Merci
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 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 31 oct. 2005 à 20:07
0
Merci
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]
remilafouine 33 Messages postés jeudi 20 janvier 2005Date d'inscription 11 juin 2007 Dernière intervention - 1 nov. 2005 à 10:41
0
Merci
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 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 1 nov. 2005 à 11:52
0
Merci
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]
remilafouine 33 Messages postés jeudi 20 janvier 2005Date d'inscription 11 juin 2007 Dernière intervention - 5 nov. 2005 à 22:51
0
Merci
C'est bon, tout marche, je vous remercie !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.