|
|
|
|
|
ExécuteThreadPrincipalAsynchrone (Fonction) En anglais : ExecuteMainThreadAsynchronous Déclenche l'exécution d'une procédure par le thread principal de l'application sans attendre la fin de l'exécution de cette procédure. // Depuis un thread secondaire, interagir avec l'utilisateur ExécuteThreadPrincipalAsynchrone(ProcédureInteractionUtilisateur, "Message") Syntaxe
ExécuteThreadPrincipalAsynchrone(<Procédure WLangage> [, <Paramètre 1> [... [, <Paramètre N>]]])
<Procédure WLangage> : Nom de procédure Nom de la procédure à exécuter. <Paramètre 1> : Optionnel Paramètres à passer à la procédure. Attention : ces paramètres sont passés par valeur (et non par référence). <Paramètre N> : Optionnel Paramètres à passer à la procédure. Attention : ces paramètres sont passés par valeur (et non par référence). Remarques Fonctionnement L'exécution de la procédure est effectuée par le thread principal lorsque celui-ci est en attente d'interactions avec l'utilisateur. Lorsque le thread principal d'une application doit exécuter des procédures appelées par ExécuteThreadPrincipalAsynchrone, il faut donc respecter des règles strictes : - le thread principal doit être hautement disponible : sections critiques très courtes et très localisées, pas de traitement long lorsqu'un thread secondaire peut avoir besoin d'appeler la fonction ExécuteThreadPrincipalAsynchrone, pas d'attente d'objet de synchronisation (sémaphores, signaux, ...).
- l'appel à la fonction ExécuteThreadPrincipalAsynchrone depuis les threads doit se faire en évitant de "tenir" des objets de synchronisation (sections critiques, sémaphores, signaux, ...) pour éviter un interblocage (deadlock).
Si le thread principal est en cours d'exécution d'un traitement, ce traitement n'est pas interrompu et l'exécution de la procédure sera faite lorsque le thread principal repassera en attente d'interaction avec l'utilisateur. La fonction Multitâche permet toutefois d'interrompre un traitement long pour traiter les actions de l'utilisateur et exécuter les procédures appelées par la fonction ExécuteThreadPrincipalAsynchrone. L'appel de la fonction ExécuteThreadPrincipalAsynchrone n'est pas bloquant : la suite du code s'exécute que la procédure ait déjà été exécutée par le thread principal ou non. Il n'est pas possible de récupérer la valeur de retour de la procédure. Attention : - La fonction ExécuteThreadPrincipalAsynchrone ne permet pas d'appeler une procédure d'un contexte d'exécution "parent". Par exemple, il n'est pas possible d'appeler une procédure du projet depuis un composant externe.
- Les erreurs et les exceptions provenant de la procédure exécutée sont remontées dans le thread appelant au niveau de l'appel de la fonction ExécuteThreadPrincipalAsynchrone.
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|