Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
CALL WORKER
|
CALL WORKER ( processo ; método {; param}{; param2 ; ... ; paramN} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
processo | Texto, Inteiro longo |
![]() |
Nome ou número de processo do worker | |||||
método | Objeto, Texto |
![]() |
Nome do método de projeto a chamar | |||||
param | Expression |
![]() |
Parâmetros passados ao método | |||||
O comando CALL WORKER cria ou chama o processo worker cujo nome ou ID se passa em processo e pede a execução do metodo em seu contexto com o parâmetro opcional param.
O comando CALL WORKER encapsula os parâmetros param em uma mensagem e o envia no quadro de mensagem de worker. Para obter mais informação sobre os processos worker, consulte Sobre Workers.
No parâmetro processo, pode especificar o worker utilizando seu nome ou seu número de processo:
Nota: o processo principal, criado por 4D quando se abre um banco de dados para a interface de usuário e o modo de aplicação, é um processo trabalhador e pode ser chamado por CALL WORKER.Entretanto, já que seu nome pode variar em função da linguagem de 4D, é preferível designar este processo utilizando seu número (sempre 1) quando for utilizado CALL WORKER. [
O processo worker aparece na lista de processos de Explorador de execução e é devolvido pelo comando _o_PROCESS PROPERTIES quando se aplicar a este processo.
Em formula, designe o código 4D que se executará no contexto do processo pai de janela. Pode passar:
um objeto fórmula (ver Objetos Fórmula). Os objetos fórmula podem encapsular qualquer expressão executável, incluindo funções e métodos projeto;
uma string que contenha o nome do método projeto. Pode se passar uma string vazia, neste caso, o worker executa o metodo que usou originalmente para iniciar seu processo, se houver ( ou seja, o método de inicio do worker).
Em metodo, se passa o nome de método de projeto a executar no contexto do processo worker. Pode passar uma string vazia; neste caso, o trabalhador executa o método que se utilizou originalmente para começar seu processo, se houver (ou seja, o método de inicio do worker).
Nota: não é possível passar uma string vazia no método quando o comando chamar ao processo principal (processo número 1), já que não foi iniciado utilizando um método projeto. CALL WORKER (1;"") não faz nada.
Também pode passar parâmetros ao metodo utilizando um ou mais parâmetros opcionaiss param. Passe os parâmetros da mesma maneira que os passaria a uma subrotina (ver ). Ao iniciar a execução no contexto do processo, o método de processo recebe os valores de parâmetro em $1, $2, e assim sucessivamente. Lembre que os arrays não podem ser passados como parâmetros a um método. Além disso, no contexto do comando CALL WORKER, as seguintes considerações adicionais devem ser levadas em consideração:
Um processo worker se mantém vivo até que a aplicação esteja fechada ou o comando KILL WORKER se chame explicitamente. Para liberar memória, não esqueça de chamar a este comando quando um processo worker já não for necessário.
Em um formulário, um botão inicia um cálculo, por exemplo as estatísticas relativas ao ano selecionado. O botâo cria ou chama a um processo de trabalho que vai calcular os dados enquanto o usuário pode continuar trabalhando no formulário.
O método do botão é:
//chamar ao trabalhador myWorker com o parâmetro
var $vYear: Integer
vYear:=2015 // poderia ter sido selecionado pelo usuário no formulário
CALL WORKER("myWorker";"workerMethod";vYear;Current form window)
O código de workerMethod é:
// este é o método do trabalhador
// pode ser apropriativo ou cooperativo
#DECLARE($vYearInteger;$windowInteger) //referencia da janela e ano
var $vStatResults : Object //para armazenar os resultados das estatísticas</p> <p style="text-align: left;">... //calcular estatísticas
//quando tiver terminado, volta a chamar o formulário com os valores calculados
//vStatResults poderia mostrar os resultados no formulário
CALL FORM($2;"displayStats";vStatResults)
Produto: 4D
Tema: Processos (Comunicações)
Número
1389
Criado por: 4D v15 R5
Modificado: 4D v16 R4
Modificado: 4D v19 R6
Manual de linguagem 4D ( 4D v20 R7)