4D v16.3

CALL WORKER

Página Inicial

 
4D v16.3
CALL WORKER

CALL WORKER 


 

CALL WORKER ( processo ; método {; param}{; param2 ; ... ; paramN} ) 
Parâmetro Tipo   Descrição
processo  Texto, Inteiro longo in Nome ou número de processo do worker
método  Texto in Nome do método de projeto a chamar
param  Expression in 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  [#title id="8727"/].

No parâmetro processo, pode especificar o worker utilizando seu nome ou seu número de processo:

  • Se passar o número de um processo que não existir, ou se o processo especificado não foi criado por CALL WORKER nem por 4D (tal como o processo principal da aplicação), CALL WORKER não faz nada.
  • Se passar o nome de um processo que nãoo existe, um novo processo worker é criado.

Nota:

 Os nomes de processo workers são sensíveis às maiúsculas e minúsculas.

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 PROCESS PROPERTIES quando se aplicar a este processo.

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  Passando Parâmetros para Métodos). 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:

  • Se permite ponteiros a tabelas ou campos.
  • Os ponteiros as variáveis, particularmente as variáveis locais e de processo, não são recomendadas já que estas variáveis podem estar indefinidas no momento de seu acesso pelo método de processo.
  • Se passar um parâmetro de tipo Objeto, 4D cria uma copia do objeto no processo de destino se o worker for encontrado em um processo diferente do que chama ao comando CALL WORKER.

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.

Exemplo  

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 vWorkerName com o parâmetro
 C_LONGINT(vYear)
 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
 C_LONGINT($1//obtém o  ano
 C_LONGINT($2//obtém a referência da janela
 C_OBJECT(vStatResults//para armazenar os resultados das estatísticas
 ... //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)



Ver também 

CALL FORM
Current process name
KILL WORKER
Sobre Workers

 
PROPRIEDADES 

Produto: 4D
Tema: Processos (Comunicações)
Número 1389

This command can be run in preemptive processes

 
HISTÓRIA 

Criado por: 4D v15 R5

 
ARTICLE USAGE

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