4D v13.4

New process

Página Inicial

 
4D v13.4
New process

New process 


 

New process ( metodo ; pilha {; nome {; param {; param2 ; ... ; paramN}}}{; *} ) -> Resultado 
metodo  cadeia in Method to be executed within the process
pilha  Inteiro longo in Stack size in bytes
nome  cadeia in Name of the process created
param  Expression in Parameter(s) to the method
in Unique process

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.

En pila, se pasa la cantidad de memoria asignada para la pila del proceso. Este valor representa el espacio en memoria utilizado para “apilar” las llamadas de métodos, las variables locales, los parámetros de subrutinas y los registros apilados. Se expresa en bytes; se recomienda pasar al menos 64K (alrededor de 64 000 bytes), pero puede pasar más si la cadena de llamadas en el proceso (subrutinas llamando subrutinas en cascada) es importante. Por ejemplo, si es necesario puede pasar 200K (alrededor de 200 000 bytes).

Nota: la pila NO es la memoria total reservada para el proceso. Los procesos comparten memoria para los registros, las variables interproceso, etc. Un proceso utiliza igualmente la memoria extra para almacenar sus variables proceso. La pila sólo contiene variables locales, llamadas de métodos, parámetros en subrutinas y registros apilados.

Nota 4D Server 64 bits: la pila de un proceso ejecutado en 4D Server 64 bits requiere más memoria que en 4D Server 32 bits (alrededor del doble). Le recomendamos en este contexto pasar un valor de 128 000 bytes en general y 400 000 bytes en caso de una cadena de llamada importante. Asegúrese de verificar este parámetro cuando su código esté destinado a ser ejecutado en 4D Server 64 bits.

El nombre del nuevo proceso se pasa en nombre. En monousuario, este nombre aparecerá en la lista de procesos del entorno Diseño, y será devuelto por el comando PROCESS PROPERTIES cuando se aplica a este nuevo proceso. En cliente/servidor, este nombre aparecerá en azul en la lista de Procedimientos almacenados de la ventana principal de 4D Server.

Puede omitir este parámetro; si lo hace, el nombre del proceso será una cadena vacía.

Advertencia: a diferencia del comando Nuevo Proceso, no intente crear un proceso local colocándole el signo dólares ($) como prefijo al nombre mientras utiliza Execute on server. Funcionará correctamente en monousuario, porque Execute on server actúa como New Process en este entorno. Por otra parte, en Cliente/Servidor, esto generará un error.

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

 
INDEX

Lista alfabética dos comandos

 
HISTÓRIA 

Modificado: 4D 2004.3

 
VER TAMBÉM 

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