Bonjour,
j'ai un traitement a faire chaque X secondes .....comment ecrire ma boucle while en c++ afin de supporter ce critere?
while( ... )
{
// mon traitement ;
}
merci
Bonjour,
j'ai un traitement a faire chaque X secondes .....comment ecrire ma boucle while en c++ afin de supporter ce critere?
while( ... )
{
// mon traitement ;
}
merci
Pourquoi ne crées-tu pas un timer ?
comment le faire ?sachant que je dois passer la duree en prametre
![]()
Montre moi comment creer un timer pour que je puisse l'alimenter avec une valeur X donnéeet merci
Utilise SetTimer, et tu as aussi le droit de faire une recherche sur le forum, le sujet a été maintes fois traité
Ca dépends:
1/ Sur quel type de projet travailles-tu? (dialog based, SDI, MDI, console...)
2/ Quelle est la précision dont tu as besoin?
C'est un executable Win32 consiole simple que ej susi entrain de faire ...tout ce qu eje veux faire c'est que ce timer controle le traitement toutes les X secondes ...je ne veux pas utiliser Sleep !! voilà
Et bien dans ce cas, je n'ai rien à rajouter àEnvoyé par nico-pyright(c)
C'est quoi que tu veux ontrôler parce qu'on parle de timer mais c'est pas dis que se soit la solution( pour info pour créer un timer sous Windows fais une recherche sur la fonction CreateTimer)
qu'est-ce qui pose problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 VOID CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) { OutputDebugString("1 seconde\n"); // appelé toutes les secondes } int main(int argc, char* argv[]) { SetTimer(NULL, 1, 1000, TimerProc); MSG msg; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; }
Merci pour cet effort....j'apprécie..mais y aurait il moyen plus simple de prendre un intervalle de temps dans une boucle while qui fait un certain traitement !!!!
le raisonnement est simple : tant que X secondes sont ecoulés alors on fait le traitement...et ainsi de suite ....
Sleep ou Wait.:
ou alors un calcul avec différence de temps, mais le problème, c'est que ca va utiliser 100% du CPU
et c'est dommage.
Les timers sont fait pour ca
bon....et comment donc l'injecter dans uen boucle while!! est ce possible ou pas !! voilà ma question...
Sinon pour l'exemple du timer deja proposé... comment encapsuler mon traitement pour que ca soit fait selon les intervalles propre au timer !!
merci
il y en a une de boucle while dans l'exemple.
Que veux-tu faire exactement ?
Dans mon exemple, j'affiche une phrase toutes les secondes. (Ok, je gère pas la fin et la sortie de boucle, mais c'est faisable ...)
Je vise une application consile Win 32 en c++ prenant de la ligne de commande les argumenst qu'il faut .si je prend ton exemple comment tu fait si jamais ke et passe comme arguments :
5000 Test
ou 5000 est la periode d'affichage
Test : la phrase a afficher !
ca m'aidera
merci
la franchement, j'ai rien compris.Envoyé par jlassira
Tu veux que je t'explique comment on récupère la ligne de commande ?
Si tu veux une période de 5000 ms, il suffit de changer cette valeur dans SetTimer. Afficher dans la console ? avec printf ou cout par exemple
NB : n'oublie pas qu'il faudra gerer une condition de sortie en détruisant le timer (avec KillTimer)
ma question de depart etait pourtant simple :
j'ai un traitement a faire chaque X secondes .....comment ecrire ma boucle while en c++ afin de supporter ce critere?
while( ... )
{
// mon traitement ;
}
donc mon soucis ce n'est pas la lecture des parametres !! mais comment faire un traitement cyclique toutes les x secondes avec une boucle while? est ce possible ou pas tout d'abord sinon comment adapter mon bloc traitement afin qu'il s'exeute chaque X secondes !! ( exp: affichage d'un message sur l'ecran, lecture d'un fichier et copie dans un autre ...envoie d'un mail...)
et encore merci![]()
tu as toutes les cartes en main, les messages précédents t'expliquent comment faire...
Pour résumé, tu as deux solutions :
- soit tu gardes ta fameuse boucle while en y incorporant un ::Sleep() pour faire une pause à l'intérieur,
- soit tu implémentes un timer Win32 avec ::CreateTimer() et ::KillTimer() et dans la fonction de callback du timer tu mets le corps de ta boucle while() qui n'aura bien sûr plus lieu d'être.
Y'a rien de sorcier, ou alors précise ton problème.
![]()
Partager