Version 2004.3 (Geändert)
New process (Methodenname; Stapel{; Prozessname{; Parameter{; Parameter2; ...; ParameterN}{; *}}}) Numerisch
Parameter | Typ | Beschreibung | |
Methodenname | String | Zu startende Methode | |
Stapel | Numerisch | Größe des Stapelspeichers in Byte | |
Prozessname | String | Name des erzeugten Prozesses | |
Parameter | Ausdruck | Parameter für die Methode | |
* | Einmaliger Prozess | ||
Funktionsergebnis | Numerisch | Prozessnummer des neu erstellten | |
bzw. bereits laufenden Prozesses |
Beschreibung
Die Funktion New process startet auf demselben Rechner einen neuen Prozess und gibt seine Prozessnummer zurück. Diese Nummer ist zu einem bestimmten Zeitpunkt eindeutig. Ist der Prozess gelöscht, wird die Prozessnummer neu vergeben.
Konnte der Prozess nicht erstellt werden, z.B weil der Speicher dafür nicht ausreicht, gibt New process den Wert Null (0) zurück und es wird ein Fehler generiert. Sie können diesen Fehler über eine Fehlerverwaltungsmethode ausfindig machen, die ON ERR CALL einsetzt.
Methodenname ist der Name der Methode, die im Prozess gestartet werden soll.
Nachdem 4D den Kontext für den neuen Prozess bestimmt hat, beginnt es mit der Ausführung dieser Methode. Sie wird zur Prozessmethode.
Stapel gibt die Größe des Stapelspeichers in Bytes an. Im Stapelspeicher werden Methodenaufrufe, lokale Variablen, Parameter in Unterroutinen und gestapelte Datensatze angehäuft. Sie sollten dem Speicher mindestens 64 000 Bytes zuweisen. Bei sehr langen, verschachtelten Methoden weisen Sie 200 000 Bytes oder mehr zu. Wenn Sie zuwenig Speicher zuweisen, tritt die Fehlermeldung "Der Stapelspeicher ist voll" auf. Der angegebene Wert muss ein Vielfaches von 2 sein.
Hinweis: Der Stapelspeicher ist NICHT der Gesamtspeicher des Prozesses. Prozesse teilen den Speicher auf zwischen Datensätzen, Interprozessvariablen usw.. Prozessvariablen speichern Sie in einem Extraspeicher. Der Stapelspeicher enthält verschiedene 4D Informationen, wie lokale Variablen, Informationen wie Verschachtelungstiefe und rufende Methode/Formular; ihre Größe hängt ab von der Anzahl der eingebetteten Methoden.
Prozessname ist optional. Dieser Name wird in der Prozessliste in der Designumgebung angezeigt. Er wird von dem Befehl PROCESS PROPERTIES zurückgegeben, wenn er auf diesen neuen Prozess angewendet wird. Der Name kann bis zu 31 Zeichen lang sein. Geben Sie diesen Parameter nicht an, ist Prozessname ein leerer String. Soll der Prozess nur lokal gelten, stellen Sie das Dollarzeichen voran ($).
4D Server: Prozesse, die nur lokal auf den Arbeitstationen laufen, werden nicht auf dem Server erzeugt und erscheinen nicht in der Prozessliste.
Ein lokaler Prozess wird nur auf der Arbeitsstation erzeugt. Er kann nicht auf Daten zugreifen, ist aber beispielsweise sinnvoll für Fensterdarstellungen. Weitere Informationen dazu finden Sie im 4D Serverhandbuch.
Parameter für Prozessmethode: Ab Version 6 können Sie für die Prozessmethode Parameter übergeben, und zwar genauso wie für eine Unterroutine. Lediglich Ausdrücke vom Typ Zeiger und Arrays können Sie nicht übergeben. Sobald die Ausführung im Kontext des neuen Prozesses startet, erhält die Prozessmethode die Parameterwerte in $1, $2, etc.
Hinweis: Übergeben Sie Parameter in der Prozessmethode, müssen Sie auch Prozessname übergeben. In diesem Fall können Sie ihn nicht weglassen.
Optionaler Parameter * : Geben Sie diesen Parameter an, erhält 4D die Anweisung, zuerst zu prüfen, ob bereits ein Prozess Prozessname vorhanden ist. Ist dies der Fall, startet 4D keinen neuen Prozess und gibt die Prozessnummer des Prozesses Prozessname zurück.
Beispiel
Wir gehen aus von der Projektmethode:
` ADD CUSTOMERS MENU BAR (1) Repeat ADD RECORD([Customers];*) Until (OK=0)
Fügen Sie diese Projektmethode über den Menüleisteneditor der Designumgebung in einem eigenen Menüeintrag hinzu, für den die Eigenschaft Starte Neuen Prozess aktiviert ist, startet 4D automatisch einen neuen Prozess, der mit dieser Methode läuft. Der Aufruf MENU BAR(1) fügt dem neuen Prozess eine Menüleiste hinzu. Ist kein Fenster vorhanden (das sie mit der Funktion Open window öffnen können), öffnet der Aufruf von ADD RECORD automatisch ein Fenster.
Damit Sie den Prozess Add Customers über eine Schaltfläche in einem eigenen Kontrollfeld starten können, schreiben Sie:
` Objektmethode für Schaltfläche bAddCustomers $vlProcessID:=New process("Add Customers";32*1024;"Kunden hinzufügen")
Die Schaltfläche führt dasselbe aus wie der eigene Menüeintrag.
Wollen Sie beim Auswählen des Menüeintrags oder Anklicken der Schaltfläche den Prozess starten (wenn er nicht vorhanden ist) oder nach vorne bringen (wenn er schon läuft), können Sie die Methode
START ADD CUSTOMERSeinrichten:
` START ADD CUSTOMERS $vlProcessID:=New process("Add Customers";64*1024;"Kunden hinzufügen";*) If ($vlProcessID#0) BRING TO FRONT ($vlProcessID) End if
Die Objektmethode der Schaltfläche bAddCustomers lautet dann:
` Objektmethode für SchaltflächebAddCustomers START ADD CUSTOMERS
Im Menüleisteneditor ersetzen Sie die Methode ADD CUSTOMERS durch die Methode START ADD CUSTOMERS und deaktivieren die Eigenschaft Starte Neuen Prozess für den Menüeintrag.
Referenz
Einführung in Prozesse, Execute on server, Methoden, Projektmethoden, Variablen.