4D v16.3

CALL WORKER

Inicio

 
4D v16.3
CALL WORKER

CALL WORKER 


 

CALL WORKER ( proceso ; metodo {; param}{; param2 ; ... ; paramN} ) 
Parámetro Tipo   Descripción
proceso  Texto, Entero largo in Nombre o número del proceso worker
metodo  Texto in Nombre del método proyecto a llamar
param  Expresión in Parámetros pasados al método

El comando CALL WORKER crea o llama al proceso worker cuyo nombre o ID se pasa en proceso y pide la ejecución del metodo en su contexto con el parámetro opcional param.

El comando CALL WORKER encapsula los parámetros param en un mensaje y lo envía en el buzón de mensajes del worker. Para obtener más información sobre los procesos worker, por favor consulte la sección [#title id="8727"/].

En el parámetro proceso, puede especificar el worker utilizando su nombre o su número de proceso:

  • Si pasa el número de un proceso que no existe, o si el proceso especificado no fue creado por CALL WORKER ni por 4D (tal como el proceso principal de la aplicación), CALL WORKER no hace nada.
  • Si pasa el nombre de un proceso que no existe, se crea un nuevo proceso worker.

Notas:

  • Los nombres de proceso workers son sensibles a las mayúsculas y minúsculas.
  • El proceso principal, creado por 4D cuando se abre una base para la interfaz de usuario y el modo de aplicación, es un proceso worker y puede ser llamado por CALL WORKER.Sin embargo, ya que su nombre puede variar en función del lenguaje de 4D, es preferible designar este proceso utilizando su número (siempre 1) cuando se utiliza CALL WORKER.

El proceso worker aparece en la lista de procesos del Explorador de ejecución y es devuelto por el comando PROCESS PROPERTIES cuando se aplica a este proceso.

En metodo, se pasa el nombre del método de proyecto a ejecutar en el contexto del proceso worker. Puede pasar una cadena vacía; en este caso, el worker  ejecuta el método que se utilizó originalmente para comenzar su proceso, si lo hay (es decir, el método de inicio del worker).

Nota: no es posible pasar una cadena vacía en el método cuando el comando llama al proceso principal (proceso número 1), ya que no se ha iniciado utilizando un método proyecto. Como resultado, CALL WORKER (1;"") no hace nada.

También puede pasar parámetros al metodo utilizando uno o más parámetros opcionales param. Pase los parámetros de la misma manera que los pasaría a una subrutina (ver la sección Pasar parámetros a los métodos). Al iniciar la ejecución en el contexto del proceso, el método de proceso recibe los valores de parámetro en $1, $2, y así sucesivamente. Recuerde que los arrays no pueden ser pasados ​​como parámetros a un método. Además, en el contexto del comando CALL WORKER, las siguientes consideraciones adicionales deben tenerse en cuenta:

  • Se permite punteros a tablas o campos.
  • Los punteros a las variables, particularmente las variables locales y de proceso, no se recomiendan ya que estas variables pueden estar indefinidas en el momento de su acceso por el método de proceso.
  • Si pasa un parámetro de tipo Objeto, 4D crea una copia del objeto en el proceso de destino si el worker se encuentra en un proceso diferente del que llama al comando CALL WORKER.

Un proceso worker se mantiene vivo hasta que la aplicación esté cerrada o el comando KILL WORKER se llame explícitamente. Para liberar memoria, no olvide llamar a este comando una vez un proceso worker ya no sea necesario.

Ejemplo  

En un formulario, un botón inicia un cálculo, por ejemplo las estadísticas con respecto al año seleccionado. El botón crea o llama a un proceso de worker que va a calcular los datos mientras el usuario puede continuar trabajando en el formulario.

El método del botón es:

  //llamar al worker vWorkerName con el parámetro
 C_LONGINT(vYear)
 vYear:=2015 // podría haber sido seleccionado por el usuario en el formulario
 CALL WORKER("myWorker";"workerMethod";vYear;Current form window)

El código de workerMethod es:

  // este es el método del worker
  // puede ser apropiativo o cooperativo
 C_LONGINT($1//obtiene el año
 C_LONGINT($2//obtiene la referencia de la ventana
 C_OBJECT(vStatResults//para almacenar los resultados de las estadísticas
 ... //calcular estadísticas
  //una vez terminado, vuelve a llamar el formulario con los valores calculados
  //vStatResults podría mostrar los resultados en el formulario
 CALL FORM($2;"displayStats";vStatResults)



Ver también 

CALL FORM
Current process name
KILL WORKER
Sobre workers

 
PROPIEDADES 

Producto: 4D
Tema: Procesos (Comunicación)
Número 1389

This command can be run in preemptive processes

 
HISTORIA 

Creado por: 4D v15 R5

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)