4D v16.3

APPELER WORKER

Accueil

 
4D v16.3
APPELER WORKER

APPELER WORKER 


 

APPELER 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 APPELER 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 APPELER 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 APPELER WORKER ni par 4D lui-même (tel quel le process principal de l’application), APPELER 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 APPELER 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 APPELER WORKER.

Le process worker est affiché dans la liste des process de l'Explorateur d'exécution et est retourné par la commande INFORMATIONS PROCESS 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, APPELER 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 APPELER 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 APPELER WORKER.

Un process worker reste actif jusqu’à la fermeture de l'application ou jusqu'à ce que la commande TUER 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_ENTIER LONG(vAnnée)
 vAnnée:=2015 //peut être sélectionné par l’utilisateur dans le formulaire
 APPELER WORKER("monWorker";"méthodeWorker";vAnnée;Fenetre formulaire courant)

Voici le code de méthodeWorker :

  //voici la méthode du worker
  //peut être préemptif ou coopératif
 C_ENTIER LONG($1//reçoit l’année
 C_ENTIER LONG($2//reçoit la référence de la fenêtre
 C_OBJET(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
 APPELER FORMULAIRE($2;"affichageStats";vRésultatStatistiques)



Voir aussi  

A propos des workers
APPELER FORMULAIRE
Nom du process courant
TUER WORKER

 
PROPRIÉTÉS 

Produit : 4D
Thème : Process (Communications)
Numéro : 1389
Nom intl. : CALL WORKER

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)