Stopper l'activité du code

Résolu
gorgotha Messages postés 16 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 25 octobre 2011 - 7 sept. 2006 à 11:10
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 7 sept. 2006 à 17:44
Bonjour, j'explique mon probleme :

Sur un form, j'ai plusieurs timer qui se mettent en route et se désactivent, suivant tels ou tels critères, et font appel à des procédures, des modules, etc.
J'ai un bouton "stop" et j'aimerais qu'en cliquant sur ce bouton, cela arrête TOUT ce qui est en train de se passer.
J'ai bien essayer le timer1.enabled = false, mais comme il a appelé un module, il le continue quand meme...

J'espere que je suis assez clair dans mon explication!

Donc ma question serait : Existe-t-il un code pour lui dire de stopper toute activité, de sortir du code, en gros, de tout laisser tomber ce qu'il est en train de faire...!

Merci d'avance...

14 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 sept. 2006 à 11:35
Je pense que la seule façon est de mettre une variable booléenne, du genre Arret = True/False


Et tu devras lire cette variable un peu partout dans tes procédures

L'utilisation de DoEvents doit être considérée aussi

MPi
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 sept. 2006 à 12:00
Je rejoint l'idée de MPi : tu n'as pas le choix, soit tu utilise un système différent que des appels de fonctions dans tes timers, soit tu passe par un test de variable dans tes procèdures pour les quitter !
3
Slyders Messages postés 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
7 sept. 2006 à 11:21
Il y a la fonction End qui Arrete le programme et le quitte
Sinon il y a un commande pour sortir de ta procédure et donc tout arreter: Exit Sub

En espérant t'avoir éclaici...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 sept. 2006 à 11:35
Salut,

voir la fonction de l'API windows Sleep :

Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gorgotha Messages postés 16 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 25 octobre 2011
7 sept. 2006 à 12:51
Merci pour vos réponses rapides! Donc il n'existe aucune fonction permettant de stopper tout...

Les fonctions exit sub ou end ne conviendrait pas, car les timer agissent sur tout le projet entier.

Et la fonction sleep j'y ai pensé, mais elle met juste le processus en attente...pour un laps de temps (d'après ce que je me souviens...)

Donc je vais utiliser une variable un peu partout dans mon code, c'est le plus simple.

Encore merci ^^
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 sept. 2006 à 13:27
Tout dépend comment se comporte tes fonctions, si tu as des fonctions qui font des boucles infinies (ou pas), il te suffit de tester la variable dans le test de ta boucle.
Par contre, si tu as uniquement des fonctions simples qui sont appelées en boucle par le timer, dès le prochain cycle du timer, tu stope l'appel de la fonction.

La fonction sleep ne permet en effet que de faire une pause dans l'éxécution, mais ne permet absolument pas de stoper l'éxécution de toutes les procédures en cours !
0
Slyders Messages postés 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
7 sept. 2006 à 13:30
Ta essayé la fonction Exit Sub ? oO
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 sept. 2006 à 13:35
Slyders : il a plusieur fonctiosn appelées par des timers. Donc son but n'est pas de sortir d'une seule fonction ou sub, mais de toutes !
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
7 sept. 2006 à 14:38
Pourquoi ne pas faire un objet qui contiendrais un évènement stop et lorsque celui-ci est appeler alors il dispose l'objet

Chris...
Web : Firstruner
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 sept. 2006 à 14:38
Je penche aussi pour le booléen, tout comme Mpi et DarkSidious.
Au même titre que la fonction Sleep que j'ai proposé n'est pas appropriée si ce n'est pas pour une pause temporaire.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 sept. 2006 à 15:23
Bonjour tout le monde,

Combinons les deux:
Un Objet TimerX et une Booléenne
Au depart :
Booleenne=False
TimerX.Enabled=False


Pour Stopper
timer1.enabled = false
TimerX.Enabled=True


Sub TimerX()
   Booleenne=True
End Sub




Dans le code Module
Tester à chaque bout de code
If Booleenne =True Then
 TimerX.Enabled=False
 Exit sub
End If

chaibat
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 sept. 2006 à 15:37
@cboulas
¨¨Ps:
Stop est pour le debogage: Impossible de relancer le Prog par la suite,
(tu dois le quitter définitivement.)
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
7 sept. 2006 à 17:28
> 736628 chaibat05: =287309 cboulas a parler d'un "Objet possédant un événement STOP" il n'a pas parler de l'instruction STOP .

@+,   Ju£i?n
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
7 sept. 2006 à 17:44
Pardon !
et je retire alors mon "commentaire".
0
Rejoignez-nous