Stopper l'activité du code

Résolu
Messages postés
16
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
25 octobre 2011
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
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

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
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 !
Messages postés
300
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
8 janvier 2010
2
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...
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

voir la fonction de l'API windows Sleep :

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

++
Messages postés
16
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
25 octobre 2011

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 ^^
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
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 !
Messages postés
300
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
8 janvier 2010
2
Ta essayé la fonction Exit Sub ? oO
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
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 !
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
<!--
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
@cboulas
¨¨Ps:
Stop est pour le debogage: Impossible de relancer le Prog par la suite,
(tu dois le quitter définitivement.)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
> 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
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Pardon !
et je retire alors mon "commentaire".