versión 2004.3 (Modificado)
New process (metodo; pila{; nombre{; param{; param2; ...; paramN}{; *}}}) Numérico
Parámetro | Tipo | Descripción | |
metodo | Alfa | Método a ejecutar en el proceso | |
pila | Numérico | Tamaño de la pila en bytes | |
nombre | Alfa | Nombre del proceso creado | |
param | Expresión | Parámetros del método | |
* | Proceso único | ||
Resultado | Numérico | Número del proceso creado recientemente | |
o del proceso que está siendo ejecutado |
Descripción
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.
Método de proceso: En metodo, usted 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.
Pila de proceso: En pila, usted pasa la cantidad de memoria asignada para la pila del proceso. Este valor representa el espacio utilizado en memoria para "apilar" las llamadas de método, las variables locales, los parámetros de las 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 el proceso puede realizar llamadas de cadenas largas (subrutinas llaman a subrutinas en cascada). Por ejemplo, puede pasar 200K (alrededor de 200 000 bytes), si es necesario.
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 memoria extra para almacenar sus variables procesos. La pila contiene diversa información de 4D; el tamaño de esta información varía en función del número de llamadas de métodos anidados.
Nombre del proceso: Usted pasa el nombre de 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. un nombre de proceso puede contener hasta 31 caracteres. Puede omitir este parámetro; si lo hace, el nombre del proceso será una cadena vacía. Puede crear un proceso local colocando el signo dólar ($) como prefijo del nombre.
Importante: Recuerde que los procesos locales no deben acceder a los datos en Cliente/Servidor.
Parámetros del método proceso: 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ónno 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.
Parámetro opcional *: 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
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ú.
Ver también
Execute on server, Métodos, Métodos de proyecto, Procesos, Variables.