Eggdrop & Tcl

Base de connaissances eggdrop et tcl

Outils pour utilisateurs

Outils du site


tcl:after

after

Exécute une commande après un certain délai

Syntaxe

after ms
after ms ?script script script ...?
after cancel id
after cancel script script script ...
after idle ?script script script ...?
after info ?id?

Description

Cette commande est utilisée pour retarder l'exécution d'un programme ou exécuter une commande en arrière-plan après un certain délai . Elle a plusieurs formes, dépendantes du premier argument de la commande:

  • after ms ms doit être un entier donnant une durée en millisecondes. La commande dort pendant ms millisecondes et ensuite retourne. Tant que la commande dort l'application ne répond pas aux évènements.
  • after ms ?script script script …? Sous cette forme la commande retourne immédiatement, mais elle prépare une commande Tcl à être exécutée ms millisecondes plus tard comme un gestionnaire d’événement. La commande sera exécutée exactement une fois, à l'instant donné. La commande retardée est formée par concaténation de tout les arguments de script de la même façon que par la commande concat. La commande sera exécutée au niveau global (en dehors du contexte de toute fonction Tcl). Si une erreur se produit pendant l'exécution de la commande retardée alors le mécanisme bgerror est utilisé pour rapporter l'erreur. La commande after renvoie un identificateur qui peut être utilisé pour annuler la commande retardée en utilisant after cancel.
  • after cancel id Annule l'exécution d'une commande retardée qui a été précédemment programmée. id indique quelle commande sera annulée; il doit avoir été la valeur de retour d'une précédente commande after. Si la commande désignée par id a déjà été exécutée alors la commande after cancel n'a pas d'effet.
  • after cancel script script … Cette commande annule aussi l'exécution d'une commande retardée. Les arguments script sont concaténés séparés par des espaces (comme dans la commande concat). S'il y a une commande en attente qui correspond à la chaîne, elle est annulée et ne sera jamais exécutée; si aucune commande n'est en attente alors la commande after cancel n'a pas d'effet.
  • after idle script ?script script …? Concatène les arguments script avec des séparateurs espace (comme dans la commande concat), et prépare le script résultant à être évalué plus tard comme un callback inactif . Le script sera lancé exactement une fois, à l'instant de rentrer dans la boucle d’événement et qu'il n'y a pas d’événements à traiter. La commande renvoie un identificateur qui peut être utilisé pour annuler la commande retardée en utilisant after cancel. Si une erreur se produit pendant l'exécution du script alors le mécanisme bgerror est utilisé pour rapporter l'erreur.
  • after info ?id? Cette commande renvoie l'information au sujet des gestionnaires d’événement existants. Si aucun argument id est fourni, la commande renvoie une liste d'identificateurs de tous les gestionnaires d’événements existants créés par la commande after pour cet interpréteur. Si id est fourni, il spécifie un gestionnaire existant; id doit avoir été la valeur de retour d'un précédent appel de after et il ne doit pas avoir été déjà déclenché ou été annulé. Dans ce cas la commande renvoie une liste de deux éléments. Le premier élément de la liste est le script associé à id, et le second élément est soit idle soit timer pour indiquer de quelle sorte de gestionnaire d’événement il s'agit.

Les formes after ms et after idle de la commande supposent que l'application est pilotée par événement : les commandes retardées ne seront pas exécutées tant que l'application ne rentrera pas dans la boucle d’événement. Dans les applications qui ne sont pas normalement pilotées par événement, telles que tclsh, on peut activer la boucle d’événement avec les commandes vwait et update.

Exemples

Voir aussi

tcl/after.txt · Dernière modification : 2023/10/11 10:01 de CrazyCat