4D v16.3

CALL WORKER

Accueil

 
4D v16.3
CALL WORKER

CALL WORKER 


 

CALL WORKER ( process ; méthode {; param}{; param2 ; ... ; paramN} ) 
Paramètre Type   Description
process  Texte, Entier long in Nom ou numéro du process worker
méthode  Texte in Nom de la méthode projet à appeler
param  Expression in Paramètre(s) passé(s) à la méthode

La commande CALL WORKER crée ou appelle le process worker dont vous avez passé le nom ou le numéro dans process et demande l’exécution de la methode dans son contexte avec le ou les paramètre(s) optionnel(s) spécifié(s) dans param.

La commande CALL WORKER encapsule param dans un message qu'elle envoie dans la boîte aux lettres du worker. Pour plus d'informations sur les process workers, reportez-vous à la section A propos des workers.

Dans le paramètre process, vous passez soit le nom soit le numéro du process worker :

  • Si vous passez le numéro d'un process qui n'existe pas, ou si le process spécifié n'a pas été créé par CALL WORKER ni par 4D lui-même (tel quel le process principal de l’application), CALL WORKER ne fait rien.
  • Si vous passez le nom d'un process qui n'existe pas, un nouveau process worker est créé.

Notes :

  • Attention, 4D différencie les majuscules/minuscules dans les noms des process workers.
  • Le process principal, créé par 4D à l'ouverture de la base pour l'interface utilisateur et le mode application, est un process worker et peut être appelé par CALL WORKER. Le nom de ce process pouvant varier en fonction de la langue de 4D, il est préférable de le désigner par son numéro (toujours 1) lorsque vous utilisez CALL WORKER.

Le process worker est affiché dans la liste des process de l'Explorateur d'exécution et est retourné par la commande PROCESS PROPERTIES lorsqu'elle est appliquée à ce process.

Dans le paramètre méthode, vous passez le nom de la méthode projet que vous voulez exécuter dans le contexte du process worker. Vous pouvez passer une chaîne vide ; dans ce cas, le worker exécute la méthode utilisée à l'origine pour démarrer son process, s'il y en a (c'est-à-dire, la méthode de démarrage du worker).

Note : Il n'est pas possible de passer une chaîne vide dans méthode lorsque la commande appelle le process principal (process n°1), puisqu'il n'est pas démarré via une méthode projet. Par conséquent, CALL WORKER(1;"") ne fait rien.

Vous pouvez utiliser le paramètre optionnel param pour passer un ou plusieurs paramètres à la méthode. Vous passez les paramètres de la mème façon que pour une sous-routine (voir la section Passer des paramètres aux méthodes). Au début de son exécution dans le contexte du process, la méthode du process reçoit les valeurs des paramètres dans $1, $2, etc. Notez qu'un tableau ne peut pas être passé comme paramètre à une méthode. Par ailleurs, dans le contexte de la commande CALL WORKER, les considérations suivantes doivent être prises en compte :

  • Les pointeurs vers les tables ou les champs sont autorisés.
  • Les pointeurs vers les variables, notamment les variables locales ou les variables process, ne sont pas recommandés car ils peuvent être indéfinis au moment de leur accès par la méthode du process.
  • Si vous passez un paramètre de type objet, 4D crée une copie de l'objet dans le process de destination si le worker est exécuté dans un process autre que celui qui appelle la commande CALL WORKER.

Un process worker reste actif jusqu’à la fermeture de l'application ou jusqu'à ce que la commande KILL WORKER soit appelée explicitement pour ce process. Pensez à appeler cette commande une fois que le process worker n'est plus utile afin de libérer l'espace mémoire. 

Exemple  

Dans un formulaire, un bouton démarre un calcul, par exemple des statistiques pour l'année sélectionnée. Ce bouton crée ou appelle un process worker qui effectue le calcul des données tandis que l'utilisateur peut continuer à travailler dans le formulaire.

Voici la méthode du bouton :

  //appelle le process worker vNomWorker avec le paramètre
 C_LONGINT(vAnnée)
 vAnnée:=2015 //peut être sélectionné par l’utilisateur dans le formulaire
 CALL WORKER("monWorker";"méthodeWorker";vAnnée;Current form window)

Voici le code de méthodeWorker :

  //voici la méthode du worker
  //peut être préemptif ou coopératif
 C_LONGINT($1//reçoit l’année
 C_LONGINT($2//reçoit la référence de la fenêtre
 C_OBJECT(vRésultatStatistiques//stockage de résultats statistiques
 ... //calcul des statistiques
  //une fois le calcul terminé, rappel du formulaire avec les valeurs calculées
  //vRésultatStatistiques peut afficher les résultats dans le formulaire
 CALL FORM($2;"affichageStats";vRésultatStatistiques)



Voir aussi  

A propos des workers
CALL FORM
Current process name
KILL WORKER

 
PROPRIÉTÉS 

Produit : 4D
Thème : Process (Communications)
Numéro : 1389

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
HISTORIQUE 

Créé : 4D v15 R5

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)