EvilGost
Messages postés235Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 mai 2011
-
28 févr. 2006 à 15:34
EvilGost
Messages postés235Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 mai 2011
-
1 mars 2006 à 10:33
Bonjour à toute la communauté de développeurs :)
J'ai un petit problème avec une fonction de pause que j'ai pris sur VBfrance, la voici:
Public Function hb_ms_sleep(milliseconds as long)
Dim attente as Long
attente = getTickCount + milliseconds
Do Until GetTickCount >= attente
Doevents
Loop
End Function
Le seul problème, c'est que j'utilise hb_ms_sleep(300000) qui est effectue une pause de 300000 millisecondes tout en permettant à l'utilisateur de garder la main sur le programme, et que l'utilisation du processeur monte à 98%, ce qui est assez problématique...
N'y aurait-il pas une autre solution, autre que l'utilisation d'un objet Timer, pour permettre une pause dans un programme tout en gardant la main?
Il y a t-il une différence entre le sleep (qui ne permet pas de garder la main) et le sleepex?
cs_Megafan
Messages postés389Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention23 septembre 20162 28 févr. 2006 à 16:46
Salut,
Tu peux utiliser les API CreateTimerQueue et CreateTimerQueueTimer.
Tu as un super exemple sur Allapi.net (http://www.mentalis.org/index2.shtml)
Timer non bloquant (pas comme sleep) et n'utilsant pas de ressource.
C'est t'y pas beau la vie !
@+
Megafan
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 28 févr. 2006 à 16:30
Bonjour
Ce dont je me souviens, c'est que Sleepex te permet de faire une pause selon une durée donnée ou l'exécution d'une fonction. Tu ne récupères pas la main avec sleepex non plus je crois.
Pourquoi as tu besoin de cette pause, sans indiscrétions ?
EvilGost
Messages postés235Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 mai 20112 28 févr. 2006 à 18:51
En fait, je me sers d'une pause lorsqu'une base de données access n'est pas accessible, je fais donc une pause de 5 minutes avant de retester son accès, mais ca bouffe de l'utilisation CPU Moustachu.
Pour le Thread, ca m'a l'air un peu complexe, je cherche quelque chose de plus simple, mais merci à econs pour cette idée.
Gobillot, le sleep ne change pas grand chose malheureusement, il est beaucoup trop court pour ne pas solliciter le cpu.
Quant à megafan, je cherche à créuser ton idée, mais j'aurai besoin de ton aide, j'ai bien déclaré toutes les api,
je fais un createqueuetimer de 200 000 millisecondes, ca me recupére le handle du timer mais je ne vois pas comment m'en servir pour que ca effectue une pause...peux-tu m'aider?
code:
Public Function hb_ms_sleep(milliseconds As Long)
hQueue = CreateTimerQueue()
If hTimer = 0 Then
CreateTimerQueueTimer hTimer, hQueue, AddressOf TimerCallBack, ByVal 0&, 0, milliseconds, 0
End If
End Function
Public Sub TimerCallBack(ByVal lpParameter As Long, ByVal TimerOrWaitFired As Long)
Debug.Print "Timer callback..."
End Sub