4D v16.3

New process

Inicio

 
4D v16.3
New process

New process 


 

New process ( metodo ; pila {; nombre {; param {; param2 ; ... ; paramN}}}{; *} ) -> Resultado 
Parámetro Tipo   Descripción
metodo  Cadena in Método a ejecutar en el proceso
pila  Entero largo in Tamaño de la pila en bytes
nombre  Cadena in Nombre del proceso creado
param  Expresión in Parámetros del método
Operador in Proceso único
Resultado  Entero largo in Número del proceso creado recientemente o del proceso que está siendo ejecutado

El comando New process inicia un nuevo proceso (en el mismo equipo) y devuelve el número de este proceso.

Si no se pudo crear el proceso (por ejemplo, si no hay suficiente memoria), New process devuelve cero (0) y se genera un error. Puede interceptar este error utilizando un método de gestión de errores instalado por el comando ON ERR CALL.

En metodo, se pasa el nombre del método de gestión del nuevo proceso. Una vez que 4D haya definido el contexto para el nuevo proceso, comienza la ejecución de este método que se convierte en el método de proceso.

El parámetro pila, le permite indicar 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.

  • Pase 0 en pila para utilizar un tamaño de pila predeterminado, adecuado para la mayoría de aplicaciones (valor recomendado).
  • En ciertos casos particulares, es posible que desee utilizar un valor personalizado. Debe expresarse en bytes. Se recomienda pasar un mínimo de 64 KB (alrededor de 64.000 bytes) y puede utilizar valores sobre 512 KB, en particular si el proceso puede realizar llamadas a cadenas largas (subrutinas llamando subrutinas en cascada).

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 contiene diferente información 4D: la cantidad de información depende del número de llamadas de métodos anidados, el número de formularios que abrirá antes de cerrarlos y el número y tamaño de variables locales utilizadas en cada llamada de método anidado.

Nota 4D Server 64 bits: la pila de un proceso ejecutado en 4D Server 64 bits requiere generalmente una cantidad de memoria más importante que en 4D Server 32 bits (alrededor del doble). Asegúrese de verificar este parámetro cuando su código esté destinado a ser ejecutado en 4D Server 64 bits.

Pase el nombre del nuevo proceso en nombre. Este nombre aparecerá en la lista de procesos del Explorador de ejecución y será devuelto por el comando PROCESS PROPERTIES cuando se aplica a este nuevo proceso. Puede omitir este parámetro; si lo hace, el nombre del proceso será una cadena vacía. Puede crear un proceso local colocando como prefijo el símbolo dólar ($).

Importante: Recuerde que en cliente/servidor, los procesos locales no deben acceder a los datos.

Puede pasar parámetros al método proceso utilizando uno o más parámetros param. Puede pasar parámetros de la misma manera que para las subrutinas (ver la sección Pasar parámetros a los métodos). Una vez que haya comenzado la ejecución en el contexto del nuevo proceso, el método proceso recibe los valores de los parámetros en $1, $2 , etc. Recuerde que los arrays no pueden pasarse como parámetros a un método. Además, estas consideraciones adicionales deben ser tomadas en cuenta en el contexto del comando New process:

  • Se permite punteros a tablas o campos.
  • Los punteros a las variables, particularmente las variables locales y proceso, no se recomiendan ya que estas variables pueden estar indefinidas en el momento en que método proceso las accede.
  • Si pasa un parámetro de tipo Objeto, 4D creará en este caso una copia del objeto en el proceso de destino.

Nota: si pasa los parámetros al método proceso, debe pasar el parámetro nombre; no puede omitirse en este caso.

Le indica a 4D que debe verificar primero si se está ejecutando un proceso con el nombre que usted pasó en nombre. Si es así, 4D no inicia un nuevo proceso y devuelve el número del proceso con ese nombre.

Ejemplo  

Dado el siguiente método proyecto:

  ` ADD CUSTOMERS
 SET MENU BAR(1)
 Repeat
    ADD RECORD([Customers];*)
 Until(OK=0)

Si asocia este método de proyecto a un comando de menú creado en el Editor de barras de menú y le asigna la propiedad Iniciar un nuevo proceso, 4D automáticamente iniciará un nuevo proceso en el momento de la ejecución del método. La llamada SET MENU BAR(1) asocia esta barra de menús al nuevo proceso. En ausencia de ventanas (que podría haber abierto con Open window), la llamada a ADD RECORD abrirá automáticamente una.

Para poder iniciar el proceso Add Customers haciendo clic en un botón situado en un panel de control personalizado, puede escribir:

  ` Método de objeto botón bAddCustomers
 $vlProcessID:=New process("Add Customers";0;"Adding Customers")

El botón hace lo mismo que el comando de menú personalizado.

Si cuando selecciona el elemento de menú o hace clic en el botón, usted quiere que el proceso comience (si no existe) o pasado al primer plano (si ya se está ejecutando), puede crear el método START ADD CUSTOMERS:

  ` START ADD CUSTOMERS
 $vlProcessID:=New process("Add Customers";0;"Adding Customers";*)
 If($vlProcessID#0)
    BRING TO FRONT($vlProcessID)
 End if

El método de objeto de bAddCustomers se convierte en:

  ` Método objeto del botón bAddCustomers
 START ADD CUSTOMERS

En el editor de barras de menús, puede reemplazar ADD CUSTOMERS por el método START ADD CUSTOMERS, y deseleccionar la propiedad Iniciar un nuevo proceso para el comando de menú.



Ver también 

Execute on server
Métodos
Métodos de proyecto
Procesos
Variables

 
PROPIEDADES 

Producto: 4D
Tema: Procesos
Número 317

This command can be run in preemptive processes

 
HISTORIA 

Modificado: 4D 2004.3

 
ARTICLE USAGE

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