This is the legacy 4D documentation web site. Documentations are progressively being moved to developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
CALL WORKER
|
CALL WORKER ( process ; method {; param}{; param2 ; ... ; paramN} ) | ||||||||
Parameter | Type | Description | ||||||
process | Text, Longint |
![]() |
Name or number of worker process | |||||
method | Text |
![]() |
Name of project method to call | |||||
param | Expression |
![]() |
Parameter(s) passed to method | |||||
The CALL WORKER command creates or calls the worker process whose name or ID you passed in process, and requests the execution of the method in its context with the optional param parameter(s).
The CALL WORKER command encapsulates the param parameters into a message and posts it in the worker's message box. For more information on worker processes, please refer to the About workers section.
In the process parameter, you can specify the worker using its process name or its process number:
Note: The main process, created by 4D when a database is opened for the user interface and the application mode, is a worker process and can be called by CALL WORKER. However, since its name can vary depending on the 4D language, it is preferable to designate this process using its number (always 1) when you use CALL WORKER.
The worker process appears in the list of processes of the Runtime Explorer and is returned by the PROCESS PROPERTIES command when applied to this process.
In method, you pass the name of the project method to execute in the context of the worker process. You can pass an empty string; in this case, the worker executes the method that was originally used to start its process, if any (i.e., the startup method of the worker).
Note: It is not possible to pass an empty string in method when the command calls the main process (process number 1) since it was not started using a project method. As a result, CALL WORKER (1;"") does nothing.
You can also pass parameters to the method using one or more optional param parameters. You pass parameters the same way you would pass them to a subroutine (see the section). Upon starting execution in the context of the process, the process method receives the parameter values in $1, $2, and so on. Remember that arrays cannot be passed as parameters to a method. Furthermore, in the context of the CALL WORKER command, the following additional considerations need to be taken into account:
A worker process remains alive until the application is closed or the KILL WORKER command is explicitly called for it. To free up memory, do not forget to call this command once a worker process is no longer needed.
In a form, a button starts a computation: for example, statistics for the selected year. The button creates or calls a worker process that computes the data while the user can continue to work in the form.
The method of the button is:
//call the worker myWorker with the parameter
C_LONGINT(vYear)
vYear:=2015 // could have been selected by the user in the form
CALL WORKER("myWorker";"workerMethod";vYear;Current form window)
The code of workerMethod is:
// this is the method of the worker
// it can be preemptive or cooperative
C_LONGINT($1) //gets the year
C_LONGINT($2) //gets the window reference
C_OBJECT(vStatResults) //to store statistical results
... //compute statistics
//once finished, calls the form back with calculated values
//vStatResults can display results in the form
CALL FORM($2;"displayStats";vStatResults)
Product: 4D
Theme: Process (Communications)
Number:
1389
Created: 4D v15 R5
Modified: 4D v16 R4
4D Language Reference ( 4D v19)
4D Language Reference ( 4D v19.1)
4D Language Reference ( 4D v19.4)
4D Language Reference ( 4D v19.5)
4D Language Reference ( 4D v19.6)
4D Language Reference ( 4D v19.7)
4D Language Reference ( 4D v19.8)