IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Comment ne pas saturer l'ordi avec une boucle ?


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Comment ne pas saturer l'ordi avec une boucle ?
    Bonjour à tous !
    alors voila, je voudrais faire un petit code qui ( a titre d'exemple ) affiche une boite de dialogue toutes les heures. Voila comment je m'y prends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    TCHAR infoBuf[256];
        SYSTEMTIME CurrentTime;
        
        while(1)
        {
            GetLocalTime(&CurrentTime);
            
            if(CurrentTime.wMinute == 00 && CurrentTime.wSecond == 00)
            {
                MessageBox(0, "Message", "Titre", MB_TASKMODAL);
            }
            
            else continue;
        }
    Mais cette méthode sature l'ordinateur ! N'y a-til pas un meilleur moyen, moins bourrin que cette boucle infinie ? Je note que je me fou completement d'utiliser une boucle ou pas. Tout ce que je souhaite c'est d'afficher mon message toutes les heures, donc c'est pas grave du tout si on utilise une autre m"thode que la boucle.
    Merci !

  2. #2
    Membre habitué Avatar de petit arbre
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 153
    Points
    153
    Par défaut
    Beuahhhh !!!!! (c'est mon type de salut suivant l'heure)

    il faudrait peut être mettre un ordre du style (je rends la main au système pendant xxx microsecondes) en plein milieu de la boucle?

    Enfin, je dis ça, ou autre chose .....

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    On m'a parlé d'un timer. Apparament ce serait la méthode la plus appropriée.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    1/ tu calcules le temps restant avant la prochaine heure pleine ;
    2/ tu fais un Sleep() de ce temps (en millisecondes) ;
    3/ tu affiches ta boite de dialogue ;
    4/ goto 1
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  5. #5
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    L'api Windows dispose de fonctions spécifiques pour ce genre de chose. Regarde du coté des fonctions de synchronisation. Tu peux par exemple utiliser un Event (cf. CreateEvent() ) pour signaler qu'un évènement est arrivée (i.e la fin du temps écoulé) ou un timer (cf. CreateTimerQueue() et les fonctions dites "Waitable-timer function" ).

    Référence de "synchronization" :

    http://windowssdk.msdn.microsoft.com.../ms686353.aspx

    Les fonctions de synchro :

    http://windowssdk.msdn.microsoft.com.../ms686360.aspx

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Meci beaucoup, je vais voir tout ca !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment créer un array à deux dimensions avec une boucle
    Par m4riachi dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 11/05/2015, 16h17
  2. Réponses: 6
    Dernier message: 01/06/2007, 13h19
  3. Réponses: 9
    Dernier message: 30/09/2006, 00h20
  4. Comment parcourir un fichier texte avec une boucle ?
    Par kikica dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 17h13
  5. Comment initialiser une liste de composants avec une boucle ?
    Par EricSid dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/04/2005, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo