4D v13.4New process |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v13.4
New process
|
New process ( metodo ; pila {; nombre {; param {; param2 ; ... ; paramN}}}{; *} ) -> Resultado | ||||||||
metodo | Cadena |
![]() |
Método a ejecutar en el proceso | |||||
pila | Entero largo |
![]() |
Tamaño de la pila en bytes | |||||
nombre | Cadena |
![]() |
Nombre del proceso creado | |||||
param | Expresión |
![]() |
Parámetros del método | |||||
* |
![]() |
Proceso único | ||||||
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.
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 de la versión 6, usted puede pasar parámetros al método proceso. Puede pasar parámetros de la misma manera que para las subrutinas. Sin embargo, hay una restricción, no puede pasar expresiones de tipo puntero. Igualmente, recuerde que los arrays no pueden pasarse como parámetros a un método. 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.
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.
Miremos el siguiente método de proyecto:
` AGREGAR CLIENTES
SET MENU BAR(1)
Repeat
ADD RECORD([Clientes];*)
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 instrucción SET MENU BAR(1) asocia esta barra de menús al nuevo proceso. En ausencia de ventanas (que podría haber abierto Open window), la llamada a ADD RECORD abrirá automáticamente una.
Para poder iniciar el proceso Agregar clientes haciendo clic en un botón situado en un panel de control personalizado, puede escribir:
` Método de objeto botón bAgregarClientes
$vlProcesoID:=New process("Agregar Clientes";32*1024;"Agregar Clientes")
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 INICIAR AGREGAR CLIENTES:
` INICIAR AGREGAR CLIENTES
$vlProcesoID:=New process("Agregar Clientes";32*1024;"Adición de clientes";*)
If($vlProcesoID#0)
BRING TO FRONT($vlProcesoID)
End if
El método de objeto de bAgregarClientes se convierte en:
` Método de objeto del botón bAgregarClientes
INICIAR AGREGAR CLIENTES
En el editor de barras de menús, puede reemplazar AGREGAR CLIENTES por el método INICIAR AGREGAR CLIENTES, y deseleccionar la propiedad Iniciar un nuevo proceso para el comando de menú.
Producto: 4D
Tema: Procesos
Número
317
Lista alfabética de los comandos
Modificado: 4D 2004.3
Execute on server
Métodos
Métodos de proyecto
Procesos
Variables