CANCELTASK

Instruction

Syntaxe

Demande à une tâche de s’arrêter. La tâche s’arrête à sa prochaine cession, et le code après cette cession ne s’exécute jamais.

CANCELTASK <handle>

Les éléments

<handle>Un handle de tâche : une variable remplie par STARTTASK.

À savoir

  • Les cessions sont Wait(), Sleep(), Sync(), Swap() et YieldTask(). Une tâche qui ne cède jamais ne peut pas être arrêtée : elle va jusqu’à son RETURN.
  • TaskCancelled() devient vrai aussitôt. AWAITTASK sur la tâche rend alors la main sans erreur, et TaskResult() lève une erreur.
  • Sur une tâche déjà terminée, CANCELTASK ne fait rien.
  • Une tâche annulée juste après STARTTASK s’exécute quand même jusqu’à sa première cession.
  • Un TRY dans la tâche autour d’une cession intercepte l’annulation (BASIC task cancelled), et la tâche continue jusqu’à sa cession suivante. Ajoutez RETHROW dans ce CATCH.
  • Permis dans une FUNCTION.

Exemple

steps = 0walker AS TASKHANDLESTARTTASK walker, WalkWait(0.1)CANCELTASK walkerAWAITTASK walkerIF TaskCancelled(walker) THEN Console("walker cancelled")   ' walker cancelledIF steps < 1000 THEN Console("stopped early")   ' stopped earlyENDWalk:  FOR i = 1 TO 1000    steps = steps + 1    YieldTask()  NEXTRETURN steps