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

VB 6 et antérieur Discussion :

Mettre une pause dans l'execution


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mai 2003
    Messages : 116
    Points : 94
    Points
    94
    Par défaut Mettre une pause dans l'execution
    Bonjour,
    j'ai une application qui tourne en fond de tache continuellement.
    Le problème c'est que je ne peux pas cliquer sur le bouton "Quitter", l'application se plante.
    Quelqu'un peut m'aider?
    Merci
    MENEKRE, tu connais?

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Dans la boucle, mettre quelquepart, l'instruction DoEvents
    Comme cette instruction est gourmande te temps d'exécution, il peut être interessant de mettre un mecanisme en place pour ne l'executer que toutes les x itérations
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mai 2003
    Messages : 116
    Points : 94
    Points
    94
    Par défaut
    Je l'ai ajoutée mais cela ne change rien.
    MENEKRE, tu connais?

  4. #4
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    tu peux nous montrer ton code qui boucle ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Je ne voudrais pas en rajouter une couche, OhMonBato s'en charge fort bien sur quasiment tous les messages mais quand même... encore un prototype du post en bois, sans une ligne de code, ni explication autre que "J'ai un problème".

    Malgré cela, les mêmes âmes charitables essayent de dépatouiller l'utilisateur par un : "Dans la boucle, mettre quelquepart, l'instruction DoEvents" mais soyons sérieux 2 minutes...

    RELISEZ les recommandations !

  6. #6
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mai 2003
    Messages : 116
    Points : 94
    Points
    94
    Par défaut
    1000 excuses.
    Vous avez parfaitement raison
    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
    17
    18
    19
     
    If CStr(Format(Time, "hhmmss")) > Trim(PeriodeClt1) And CStr(Format(Time, "hhmmss")) < Trim(PeriodeClt2) Then
            If Pause = 1 Then
                TxtFic.BackColor = vbRed
                TxtCpt.BackColor = vbRed
                DoEvents
                Sleep 120000   'une pause de 2 minutes
                DoEvents
                TxtFic.BackColor = vbWhite
                TxtCpt.BackColor = vbWhite
                DoEvents
                Clt_Auto
            Else
                TxtFic.BackColor = vbWhite
                TxtCpt.BackColor = vbWhite
                DoEvents
                Clt_Auto
            End If
        End If
    MENEKRE, tu connais?

  7. #7
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    J'imagine que Clt_Auto est une sub ? Que se passe t'il dans cette sub ?

    tu peux nous donner des exemples de valeurs que prennent PeriodeClt1 et PeriodeClt2 ? Vu que tu compare des chaines de caractères...

    Est-ce là l'intégralité de ta boucle ? Si oui on est bien d'accord, c'est un Do...Loop ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  8. #8
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mai 2003
    Messages : 116
    Points : 94
    Points
    94
    Par défaut
    Oui Clt_Auto est une sub. Elle ne fait que des MAJ dans une table.
    Periodeclt1=210000
    Periodeclt2=230000
    Oui c'est l'intégralité de ma boucle
    MENEKRE, tu connais?

  9. #9
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Donc tout le temps ou ton test sur l'heure n'est pas valide (j'imagine la plupart du temps), il se passe ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Do
    If CStr(Format(Time, "hhmmss")) > Trim(PeriodeClt1) And CStr(Format(Time, "hhmmss")) < Trim(PeriodeClt2) Then
     
    'Rien puisque ce n'est pas la bonne heure
     
    End If
    Loop
    Dis moi où est le DoEvents dans tout ça ?
    Connais tu l'exécution pas à pas ? tu mets ton programme en Pause et tu appuis sur F8...
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  10. #10
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Cette instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sleep 120000   'une pause de 2 minutes
    n'est pas une instruction VB, c'est une api windows. On demade à windows de nous mettre en sommeil pendant 2 minutes. Et, comme il est tres bète, c'est excatement ce qu'il fait. N'espere pas que ton programme tourne/réagisse pendant ces deux minutes.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  11. #11
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    exactement.

    L'api sleep ne permet pas l'obtention de ressources CPU en parallèle (pas de multi thread sous vb ) en conséquence de quoi il va te falloir gérer applicativement un wait de 2 minutes.

    Par exemple (en lieu et place de ton slip 12000)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dim dblNow as double
    dim dblTimer as double
    [...]
        dblNow = CDbl(Now)
        dblTimer = 0
        while dblTimer < 120
            dblTimer = CDbl(Now) - dblNow
        wend
    [...]
    Pour te laisser profiter efficacement du topic, j'ai volontairement oublié de faire figurer une instruction.

    Bon courage,
    Seb

  12. #12
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Pis histoire d'en remettre une petite couche, je me disais quand même que, à mois que tu ais besoin de vérifier toutes les millisecondes l'heure par rapport aux limites fixées par PeriodeClt1 et PeriodeClt2, plutôt que de faire une boucle qui tourne sans arrêt, tu pourrais avoir un timer qui une fois toutes les 5 ou 10 secondes (ou plus ou moins) irait vérifier ta condition (même si c'est toutes les secondes, ce sera déjà moins lourd que cette boucle infernale )
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  13. #13
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mai 2003
    Messages : 116
    Points : 94
    Points
    94
    Par défaut
    Merci pr vos contributions.
    Je vais regarder du coté des timers déjà si j'ai des questions je reviens.
    Merci
    MENEKRE, tu connais?

  14. #14
    Membre confirmé Avatar de La Praline
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 568
    Points
    568
    Par défaut
    Exemple d'utilisation d'un Timer pour effectuer une barre de chargement...
    Ludique comme exemple, il fait bien comprendre le princie du timer je pense...


    Cordialement
    ..........................."Membre Chevronné"... non "Chaviré" serait plus juste !!!
    ...............................Avant toute chose => Règles, FAQ, Tuto, Google...
    ...................................................................
    Rock'n Roll

Discussions similaires

  1. Mettre une pause dans un programme
    Par PNL dans le forum Général Java
    Réponses: 12
    Dernier message: 28/01/2016, 00h54
  2. Mettre une pause dans un SWF chargé dans un clip
    Par sebseb65 dans le forum Flash
    Réponses: 2
    Dernier message: 10/09/2008, 21h50
  3. Mettre une pause dans l'affichages sur un formulaire
    Par benjamin50 dans le forum IHM
    Réponses: 2
    Dernier message: 10/04/2008, 15h47
  4. Mettre une pause dans actionscript
    Par delavega dans le forum Flash
    Réponses: 21
    Dernier message: 07/02/2007, 16h16
  5. [FLASH MX2004] Comment mettre une pause dans un script
    Par vbcasimir dans le forum Flash
    Réponses: 3
    Dernier message: 16/02/2006, 09h47

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