Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
CALL WORKER

CALL WORKER 


 

CALL WORKER ( Prozess ; Methode {; Param}{; Param2 ; ... ; ParamN} ) 
Parameter Typ   Beschreibung
Prozess  Text, Lange Ganzzahl in Name oder Nummer des Worker Prozesses
Methode  Objekt, Text in Name der aufzurufenden Projektmethode
Param  Ausdruck in Parameter für die Methode

Der Befehl CALL WORKER erstellt oder ruft den Worker Prozess mit dem Namen oder der Nummer auf, übergeben in Prozess, und fordert auf, die Formel in ihrem Kontext mit dem optionalen Parameter Param auszuführen.

Der CALL WORKER bindet Param in eine Meldung ein und setzt sie in die Nachrichtenbox des Worker. Weitere Informationen dazu finden Sie im Abschnitt Über Worker.

Im Parameter Prozess können Sie den Worker über seinen Prozessnamen oder seine Prozessnummer angeben:

  • Übergeben Sie die Nummer eines Prozesses, der nicht existiert oder wurde der Prozess weder mit CALL WORKER noch von 4D selbst erstellt (so wie der Hauptanwendungsprozess), führt CALL WORKER nichts aus.
  • Übergeben Sie den Namen eines Prozesses, der nicht existiert, wird ein neuer Worker Prozess erstellt.

Hinweis: Der Hauptprozess, den 4D beim Öffnen einer Anwendung für die Benutzeroberfläche und den Anwendungsmodus erstellt, ist ein Worker Prozess. Er lässt sich über CALL WORKER aufrufen. Da sein Name jedoch je nach der 4D Programmiersprache variieren kann, empfehlen wir, diesen mit CALL WORKER über seine Nummer (immer 1) aufzurufen.

Der Worker Prozess erscheint in der Prozessliste des Runtime Explorer und wird vom Befehl _o_PROCESS PROPERTIES zurückgegeben, wenn er auf diesen Prozess angewendet wird.

In der Formel legen Sie den 4D Code fest, der im Kontext des Worker Prozesses ausgeführt werden soll. Sie können entweder übergeben:

  • ein Formel-Objekt (siehe Formel-Objekte). Formel-Objekte können beliebige ausführbare Ausdrücke kapseln, einschließlich Funktionen und Projektmethoden;
  • einen String, der den Namen einer Projektmethode enthält. Sie können einen leeren String übergeben; in diesem Fall führt der Worker die Methode aus, die ursprünglich zum Starten seines Prozesses verwendet wurde, falls vorhanden (d.h. die Startmethode des Workers).
    Hinweis: Es ist nicht möglich, einen leeren String in der Formel zu übergeben, wenn der Befehl den Hauptprozess (Prozess Nummer 1) aufruft, da dieser nicht mit einer Projektmethode gestartet wurde. Infolgedessen bewirkt CALL WORKER (1;"") nichts.

Sie können auch Parameter an die Formel übergeben, indem Sie einen oder mehrere optionale param-Parameter verwenden. Sie können sequenzielle Parameter oder, wenn der Ausdruck der Formel eine Funktion oder eine Projektmethode ist, benannte Parameter verwenden. Beim Start der Ausführung im Kontext des Prozesses empfängt die Prozessformel die Parameterwerte entweder in den benannten Parametern oder in $1, $2, usw. Denken Sie daran, dass Arrays nicht als Parameter übergeben werden können. Darüber hinaus müssen im Zusammenhang mit dem Befehl CALL WORKER die folgenden zusätzlichen Überlegungen berücksichtigt werden:

  • Zeiger auf Tabellen oder Felder sind erlaubt.
  • Zeiger auf Variablen, insbesondere lokale und Prozessvariablen werden nicht empfohlen, da sie zum Zeitpunkt, wo die Prozessmethode auf sie zugreift, undefiniert sein können.
  • Standardmäßige Parameter vom Typ Objekt oder Collection werden per Kopie übergeben, z.B. erstellt 4D im Zielprozess eine Kopie des Objekts oder der Collection, wenn der Worker nicht in dem Prozess liegt, den der Befehl CALL WORKER aufruft. Wollen Sie einen Parameter vom Typ Objekt oder Collection per Referenz übergeben, müssen Sie in diesem Kontext ein shared object bzw. collection übergeben (siehe unter Shared Objects und Shared Collections).

Ein Worker Prozess bleibt am Leben, bis die Anwendung geschlossen oder explizit der Befehl KILL WORKER aufgerufen wird. Rufen Sie diesen Befehl auf, wenn ein Worker Prozess nicht mehr benötigt wird, denn damit sparen Sie Speicherplatz.

Eine Schaltfläche im Formular löst eine Berechnung aus, z.B. Statistiken zum ausgewählten Jahr. Die Schaltfläche erstellt oder ruft einen Worker Prozess auf, der Daten berechnet, während der Benutzer im Formular weiterarbeiten kann.

Die Methode für die Schaltfläche lautet:

  //Den Worker myWorker mit dem Parameter
 var $vYear: Integer
 $vYear:=2015 // Mögliche Benutzerauswahl im Formular
 CALL WORKER("myWorker";Formula(workerMethod);$vYear;Current form window)

Der Code von workerMethod ist:

  // Das ist die Methode des Worker
  // Sie kann preemptive oder kooperativ sein
 #DECLARE($vYearInteger;$windowInteger)&NBSP//erhält die Referenz des Fensters
 var $vStatResults : Object //zum Speichern von Ergebnissen von Statistiken
 ... //Statistik berechnen
  //nach Beenden das Formular mit berechneten Werten zurückrufen
  //vStatResults kann Ergebnisse im Formular anzeigen
 CALL FORM($window;Formula(displayStats);$vStatResults)



Siehe auch 

CALL FORM
Current process name
KILL WORKER
Über Worker

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Prozess (Kommunikation)
Nummer: 1389

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v15 R5
Geändert: 4D v16 R4
Geändert: 4D v19 R6

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)