Sepi
Name
TCustomCoroutine
Parent
ScCoroutines
Class Hierarchy
TObject
Visibility
PUBLIC
Description
Classe de support des coroutines
La méthode Invoke ne peut avoir qu'une seule exécution à la fois. Elle ne
peut ni être appelée dans deux threads différents en même temps ; ni être
appelée depuis Execute (ce qui constitue un appel récursif).
En revanche, elle peut être appelée successivement par deux threads
différents.
La propriété Loop détermine le comportement de bouclage de la coroutine.
Celle-ci peut soit ne pas boucler (clNoLoop) : un appel à Invoke lorsque
Terminated vaut True déclenchera une exception. Soit boucler immédiatement
(clImmediate) : dès que Execute se termine, elle est rappelée sans revenir
à l'appelant. Soit boucler au prochain Invoke : dans ce cas l'appelant
reprend la main entre la fin d'une exécution et le début de la suivante.
La procédure Execute devrait tester l'état de Terminating après chaque
appel à Yield, et se terminer proprement si cette propriété vaut True.
Cette propriété sera positionnée à True lorsque l'objet coroutine devra se
libérer, avant de relancer l'exécution. Si un appel à Yield est fait dans
cet état, une exception de type ECoroutineTerminating assure que celle-ci
se termine immédiatement.
Members
Fields
Field Description FCoroutineRunning (-) True si la coroutine est cours d'exécution FCoroutineThread (-) Thread qui exécute la coroutine FExceptAddress (-) Adresse de déclenchement de l'exception FExceptObject (-) Objet exception déclenchée par la coroutine FInvokeEvent (-) Événement déclenché sur Invoke FLoop (-) Type de boucle de la coroutine FTerminated (-) True si la coroutine est terminée FTerminating (-) True si la coroutine doit se terminer FYieldEvent (-) Événement déclenché sur Yield
Methods
Method Description BeforeDestruction (+) Appelé juste avant le premier destructeur Create (+) Crée une coroutine avec une taille de pile donnée Destroy (+) Détruit l'instance EnterCoroutine (-) Entre dans la coroutine Error (+) Déclenche une erreur ECoroutineError Error (+) Déclenche une erreur ECoroutineError Execute (#) Coroutine à exécuter InitCoroutine (-) Initialise la coroutine avant sa première exécution Invoke (#) Exécute la coroutine jusqu'au prochain appel à Yield LeaveCoroutine (-) Sort la coroutine Main (-) Méthode principale de la coroutine Reset (#) Réinitialise complètement la coroutine Terminate (-) Termine la coroutine WaitForNoResult (-) Attend un événement, sans résultat Yield (#) Rend la main à l'appelant - retournera lors du prochain appel à Invoke
Properties
Property Description CoroutineRunning (#) True si la coroutine est cours d'exécution Loop (#) Type de boucle de la coroutine Terminated (#) True si la coroutine est terminée Terminating (#) True si la coroutine doit se terminer
Legend
Symbol Visibility - Private # Protected + Public * Published A Automated S Strict
Sepi