4D v14.3

Nouveau process

Accueil

 
4D v14.3
Nouveau process

Nouveau process 


 

Nouveau process ( méthode ; pile {; nom {; param {; param2 ; ... ; paramN}}}{; *} ) -> Résultat 
Paramètre Type   Description
méthode  Chaîne in Méthode à exécuter dans le process
pile  Entier long in Taille de la pile en octets
nom  Chaîne in Nom du process créé
param  Expression in Paramètre(s) de la méthode
Opérateur in Process unique
Résultat  Entier long in Numéro du process nouvellement créé ou du process déjà en cours d'exécution

La commande Nouveau process lance un nouveau process (sur la même machine) et retourne le numéro de ce process.

Si le process n'a pas pu être créé, par exemple s'il n'y a pas assez de mémoire, Nouveau process retourne zéro et une erreur est générée. Vous pouvez intercepter cette erreur à l'aide d'une méthode de gestion d'erreurs installée par la commande APPELER SUR ERREUR.

Vous passez le nom de la méthode de gestion du nouveau process dans méthode. Une fois que 4D a défini le contexte pour le nouveau process, il démarre l'exécution de cette méthode qui devient alors la méthode du process.

Vous passez dans pile la quantité de mémoire allouée pour la pile du process. Cette valeur représente la place utilisée en mémoire pour “empiler” les appels de méthode, les variables locales, les paramètres des sous-routines et les enregistrements empilés. Elle est exprimée en octets, il est conseillé de passer au moins 64K (environ 64 000 octets) mais vous pouvez passer davantage si la chaîne d'appel dans le process (sous-routines appelant des sous-routines en cascade) est importante. Si nécessaire, vous pouvez passer par exemple 200K (environ 200000 octets).

Note : La pile n'est pas la mémoire totale réservée au process. Les process se partagent la mémoire pour les enregistrements, les variables interprocess, etc. Un process utilise également de la mémoire supplémentaire pour stocker ses variables process. La pile contient diverses informations internes à 4D ; la taille de ces informations varie en fonction du nombre d'appels de méthodes imbriquées.

Note 4D Server 64 bits : La pile d'un process exécuté sur 4D Server 64 bits requiert une quantité de mémoire plus importante que sur 4D Server 32 bits (environ le double). Pour reprendre les ordres de grandeur fournis ci-dessus, il est conseillé dans ce contexte de passer une valeur de 128000 octets au minimum et de 400000 octets en cas de chaîne d'appel importante. Veillez à contrôler ce paramètre lorsque votre code est destiné à être exécuté sur 4D Server 64 bits.

Vous passez le nom du nouveau process dans nomProcess. Ce nom s'affichera dans la liste des process de l'Explorateur d'exécution et sera retourné par la commande INFORMATIONS PROCESS. Vous pouvez omettre ce paramètre ; dans ce cas, le nom du process sera une chaîne vide. Vous pouvez créer un process local en préfixant son nom d'un symbole dollar ($).

Important : Rappelez-vous que, en client/serveur, les process locaux ne doivent pas accéder aux données.

Depuis la version 6 de 4D, vous pouvez passer des paramètres à la méthode process. Vous pouvez le faire de la même manière que pour les sous-routines. Notez cependant qu'il y a une restriction : vous ne pouvez pas passer d'expression de type Pointeur. Rappelez-vous également que les tableaux ne peuvent pas être passés comme paramètres à une méthode. Une fois qu'elle a commencé à s'exécuter dans le contexte du nouveau process, la méthode process reçoit les valeurs des paramètres dans $1, $2, etc.

Note : Si vous passez des paramètres à la méthode process, vous devez passer le paramètre nom, il ne peut être omis dans ce cas.

Si vous passez le dernier paramètre (optionnel) *, vous indiquez à 4D de vérifier en premier lieu si un process du même nom que celui que vous avez passé dans nom est déjà en cours d'exécution. Si c'est le cas, 4D ne démarre pas de nouveau process et retourne le numéro du process existant.

Exemple  

Examinons la méthode projet suivante :

  ` AJOUT CLIENTS
 FIXER BARRE MENUS(1)
 Repeter
    AJOUTER ENREGISTREMENT([Clients];*)
 Jusque(OK=0)

Si vous associez cette méthode projet à une commande de menu créé dans l'éditeur de barres de menus et que vous lui affectez la propriété Démarrer un process, 4D va automatiquement créer un nouveau process lors de l'exécution de la méthode. L'instruction FIXER BARRE MENUS(1) associe cette barre de menus au nouveau process. En l'absence de toute fenêtre (que vous pourriez avoir ouverte avec Creer fenetre), l'appel à AJOUTER ENREGISTREMENT en créera une automatiquement.

Si maintenant vous voulez pouvoir démarrer le process Ajout Clients lorsque vous cliquez sur un bouton situé dans un tableau de contrôle personnalisé, vous pouvez écrire :

  ` Méthode objet bouton bAjoutClients
 $vlProcessID:=Nouveau process("Ajout Clients";32*1024;"Ajout de clients")

Ce bouton fait la même chose que la commande de menu personnalisée.

Si, maintenant, lorsque la commande de menu est sélectionnée ou lorsque le bouton reçoit un clic, vous voulez que le process soit lancé s'il n'existe pas ou qu'il soit passé au premier plan s'il existe déjà, vous pouvez créer la méthode DEMARRER AJOUT CLIENTS :

  ` DEMARRER AJOUT CLIENTS
 $vlProcessID:=Nouveau process("Ajout Clients";64*1024;"Ajout de clients ";*)
 Si($vlProcessID#0)
    PASSER AU PREMIER PLAN($vlProcessID)
 Fin de si

La méthode objet de bAjoutClient devient :

  ` Méthode objet bouton bAjoutClients
 DEMARRER AJOUT CLIENTS

Dans l'éditeur de barres de menus, vous remplacez AJOUT CLIENTS par la méthode DEMARRER AJOUT CLIENTS. Désélectionnez l'option Démarrer un process pour la commande de menu.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Process
Numéro : 317
Nom intl. : New process

 
HISTORIQUE 

Modifié : 4D 2004.3

 
VOIR AUSSI  

Executer sur serveur
Introduction aux process
Méthodes
Méthodes projet
Variables

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v12.4)
4D - Langage ( 4D v14 R3)
4D - Langage ( 4D v14 R2)
4D - Langage ( 4D v13.5)
4D - Langage ( 4D v14.3)
4D - Langage ( 4D v14 R4)

Hérité de : Nouveau process ( 4D v11 SQL Release 6)