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

Home

 
4D v19.8
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  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 Methode 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 PROCESS PROPERTIES zurückgegeben, wenn er auf diesen Prozess angewendet wird.

In Methode übergeben Sie den Namen der Projektmethode, die im Kontext des Worker Prozesses ausgeführt werden soll. Der Parameter Methode kann ein leerer String sein. In diesem Fall führt der Worker die Methode aus, die ursprünglich zum Starten ihres Prozesses, sofern vorhanden, verwendet wurde (z.B. die Start Methode des Worker).

Hinweis: Methode muss immer angegeben werden, wenn der Befehl den Hauptprozess (Prozessnummer 1) aufruft, da er nicht über eine Projektmethode gestartet wurde. Deshalb führt CALL WORKER (1;"") nichts aus.

In Param können Sie einen oder mehrere Parameter für Methode übergeben. Das funktioniert genauso wie Parameter für eine Unterroutine übergeben, siehe Abschnitt . Beim Starten der Ausführung im Rahmen des Prozesses empfängt die Prozessmethode die Parameterwerte in $1, $2, etc. Beachten Sie auch, dass sich Arrays nicht als Parameter für eine Methode übergeben lassen. Außerdem müssen Sie für den Befehl CALL WORKER folgendes beachten:

  • 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
 C_LONGINT(vYear)aufrufen
 vYear:=2015 // Mögliche Benutzerauswahl im Formular
 CALL WORKER("myWorker";"workerMethod";vYear;Current form window)

Der Code von workerMethod ist:

  // Das ist die Methode des Worker
  // Sie kann preemptive oder kooperativ sein
 C_LONGINT($1//erhält das Jahr
 C_LONGINT($2//erhält die Referenz des Fensters
 C_OBJECT(vStatResults//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($2;"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

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)
4D Programmiersprache ( 4D v19.4)
4D Programmiersprache ( 4D v19.5)
4D Programmiersprache ( 4D v19.6)
4D Programmiersprache ( 4D v19.7)
4D Programmiersprache ( 4D v19.8)