4D v14.3

New process

Página Inicial

 
4D v14.3
New process

New process 


 

New process ( metodo ; pilha {; nome {; param {; param2 ; ... ; paramN}}}{; *} ) -> Resultado 
Parâmetro Tipo   Descrição
metodo  cadeia in Método a executar no processo
pilha  Inteiro longo in Tamanho da pilha em bytes
nome  cadeia in Nome do processo criado
param  Expression in Parâmetros do método
Operador in Processo único
Resultado  Inteiro longo in Número do processo criado recentemente ou do processo que está sendo executado

O comando New process inicia um novo processo ( na mesma máquina) e devolve o número deste processo.

Caso não foi possível criar o processo (por exemplo, se não têm suficiente memória), New process devolve zero (0) e é gerado um erro. Pode interceptar este erro utilizando um método de gestão de erros instalado pelo comando ON ERR CALL.

Em metodo, é passado o nome do método de gestão do novo processo. Uma vez que 4D tenha definido o contexto para o novo processo, começa a execução deste método que se converte no método de processo.

Em pilha, passa a quantidade de memória atribuída para a pilha do processo. Este valor representa o espaço em memória utilizado para “empilhar” as chamadas de métodos, as variáveis locais, os parâmetros de sub rotinas e os registros empilhados. É expressado em bytes; se recomenda passar pelo menos 64K (ao redor de 64 000 bytes), mas pode passar mais se a cadeia de chamadas no processo (sub rotinas chamando sub rotinas em cascata) é importante. Por exemplo, se for necessário pode passar 200K (ao redor de 200 000 bytes).

Nota: a pilha NÃO é a memória total reservada para o processo. Os processos compartilham memória para os registros, as variáveis inter-processo, etc. Um processo utiliza igualmente a memória extra para armazenar suas variáveis processo. A pilha só contém variáveis locais, chamadas de métodos, parâmetros em sub rotinas e registros empilhados.

Nota 4D Server 64 bits: a pilha de um processo executado em 4D Server 64 bits requer mais memória que em 4D Server 32 bits (ao redor do dobro). Lhe recomendamos neste contexto passar um valor de 128 000 bytes em geral e 400 000 bytes em caso de uma cadeia de chamada importante. Tenha certeza de verificar este parâmetro quando seu código esteja destinado a ser executado em 4D Server 64 bits.

O nome do novo processo passa em nome. Em autônomo, este nome aparecerá na lista de processos do ambiente Desenho, e será devolvido pelo comando PROCESS PROPERTIES quando se aplica a este novo processo. Em cliente/servidor, este nome irá aparecer em azul na lista de Procedimentos armazenados da janela principal de 4D Server.

Pode omitir este parâmetro; se o fizer, o nome do processo será uma cadeia vazia.

Advertência: diferente do comando Novo Processo, não tente criar um processo local colocando nele o signo dólares ($) como prefixo ao nome enquanto utiliza Execute on server. Funcionará corretamente em autônomo, porque Execute on server atua como New Process neste ambiente. Por outra parte, em Cliente/Servidor, isto irá gerar um erro.

A partir da versão 6, você pode passar parâmetros ao método processo. Pode passar parâmetros da mesma forma que para as subrotinas. No entanto, há uma restrição, não pode passar expressões de tipo ponteiro. Igualmente, lembre que os arrays não podem  ser passados como parâmetros a um método. Uma vez que tenha começado a execução no contexto do novo processo, o método processo recebe os valores dos parâmetros em $1, $2, etc.

Nota: se passado os parâmetros ao método processo, deve passar o parâmetro nome; não pode ser omitido neste caso.

Lhe indica a 4D que deve verificar primeiro se está executando um processo com o nome que você passou em nome. Se é assim, 4D não inicia um novo processo e devolve o número do processo com este nome.

Exemplo  

Vejamos o seguinte método de projeto:

  ` ADICIONAR CLIENTES
 SET MENU BAR(1)
 Repeat
    ADD RECORD([Clientes];*)
 Until(OK=0)

Se associa este método de projeto a um comando de menu criado no Editor de barras de menu e lhe atribuí a propriedade Iniciar um novo processo, 4D automaticamente iniciará um novo processo no momento da execução do método. A instrução SET MENU BAR(1) associa esta barra de menus ao novo processo. Em ausência de janelas (que poderia ser aberta Open window), a chamada a ADD RECORD abrirá automaticamente uma.

Para poder iniciar o processo Adicionar clientes fazendo clique em um botão situado no painel de controle personalizado, pode escrever:

  ` Método de objeto botão bAdicionarClientes
 $vlProcessoID:=New process("Adicionar Clientes";32*1024;"Adicionar Clientes")

O botão faz o mesmo que o comando de menu personalizado.

Se quando seleciona o elemento de menu ou faz clique no botão, você quer que o processo comece (se não existe) ou passado ao primeiro plano (se já se está executando), pode criar o método INICIAR AGREGAR CLIENTES:

  ` INICIAR AGREGAR CLIENTES
 $vlProcessoID:=New process("Adicionar Clientes";32*1024;"Adição de clientes";*)
 If($vlProcessoID#0)
    BRING TO FRONT($vlProcessoID)
 End if

O método de objeto de bAdicionarClientes é convertido em:

  ` Método de objeto do botão bAdicionarClientes
 INICIAR ADICIONAR CLIENTES

No editor de barras de menus, pode substituir ADICIONAR CLIENTES pelo método INICIAR ADICIONAR CLIENTES, e cancelar a seleção da propriedade Iniciar um novo processo para o comando de menu.

 
PROPRIEDADES 

Produto: 4D
Tema: Processos
Número 317

 
HISTÓRIA 

Modificado: 4D 2004.3

 
VER TAMBÉM 

Execute on server
Métodos
Métodos de projeto
Processos
Variáveis

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v12.4)
Manual de linguagem 4D ( 4D v14 R3)
Manual de linguagem 4D ( 4D v14 R2)
Manual de linguagem 4D ( 4D v13.5)
Manual de linguagem 4D ( 4D v14.3)
Manual de linguagem 4D ( 4D v14 R4)

Inherited from : New process ( 4D v11 SQL Release 6)