JobStart
JobStart(int1, int2, alpha3[, alpha4[, alpha5[, handle6]]]) : int
Job starten
Details
- int1:
- Ausführungstyp::
_JobThread_JobProcess_JobCopyBuffers_JobWinPrt_JobStartNoRTE
- int2: Zeitspanne, in der die Job-Informationen zur Verfügung stehen
- alpha3: Name der Ereignisfunktion
- alpha4: Argumente für den Job (optional)
- alpha5: Beschreibung des Jobs (optional)
- handle6: Socket-Deskriptor (optional)
- Resultat:
intJob-Id oder Fehlerwert Wert >0Job-Id des neuen Jobs_ErrTerminatedJob erfolgreich durchgeführt anderer Wert <0Fehlerwert - Siehe: Verwandte Befehle ,
JobOpen ()
Die Anweisung kann innerhalb einer Ereignisfunktion des SOA-Service , sowie im Standard- oder Advanced-Client ausgeführt werden.
Mit diesem Befehl wird ein neuer Job gestartet. In (int1) wird der Ausführungstyp des Jobs angegeben: _JobThread startet einen neuen Job-Thread innerhalb des aktuellen Betriebssystemprozesses, _JobProcess einen neuen Betriebssystemprozess für diesen Job (siehe Verarbeitungshinweise ).
Der Ausführungstyp _JobProcess steht nur im SOA-Service zur Verfügung. Wird sie im Standard- oder Advanced-Client angegeben, wird der Laufzeitfehler _ErrValueInvalid ausgelöst.
Der Ausführungstyp _JobThread kann im Standard- oder Advanced-Client mit der Optionen _JobCopyBuffers und _JobWinPrt kombiniert werden.
Ist die Option _JobCopyBuffers angegeben, werden beim Start des Jobs die aktuellen Feldpuffer des Clients in die Feldpuffer des Jobs übertragen.
Wurde zwischen Anmelden des Benutzers an der Datenbank und dem JobStart ( _JobThread | _JobCopyBuffers , ...) die Datenstruktur neu aufgebaut, wird der Job nicht gestartet und die Eigenschaft JobErrorCode auf den Fehler _ErrIllegalOp gesetzt.
Die Option _JobWinPrt ermöglicht die Verwendung von Dialogen und Oberflächenobjektbefehlen im Job.
Ein mit JobStart () gestarteter Thread ist von anderen Threads isoliert. Somit kann nur auf Eigenschaften und Ereignisse von Oberflächenobjekten des eigenen Threads zugegriffen werden. Zur Thread-Kommunikation können die Message-Exchange-Befehle verwendet werden. Zum Signalisieren von Nachrichten kann der Befehl JobEvent () verwendet werden.
Die Option _JobWinPrt sollte nur verwendet werden, wenn auch auf Oberflächenobjektbefehle zugegriffen wird.
In (int2) wird die Zeitspanne in Sekunden angegeben, in der der Job noch nach seiner Beendigung mit JobOpen () geöffnet werden kann. Bei einem Wert von 0 kann der Job geöffnet werden, solange er ausgeführt wird. Der Maximalwert für (int2) beträgt 86400 Sekunden (24 Stunden).
In (alpha3) befindet sich der Name der Ereignisfunktion , die der Job aufrufen soll. In (alpha4) kann optional ein Argumenttext übergegeben werden, der in der Jobprozedur über die Eigenschaft JobData abgerufen werden kann. In (alpha5) kann optional ein Beschreibungstext für den Job angegeben werden, der in der Jobprozedur über die Eigenschaft SvcDescription abgerufen werden kann. Die Argumente und die Beschreibung können jeweils bis zu 8192 Zeichen lang sein.
Optional kann in (handle6) ein Socket-Deskriptor (siehe SckConnect ()) angegeben werden. Dabei wird eine Kopie des Deskriptors erstellt, der auf die gleiche Socket-Verbindung verweist. Diese ist in der Job-Funktion über die Eigenschaft JobSckHandle zugreifbar. Die Socket-Verbindung kann dann sowohl in dem Job , als auch in der aktuellen Prozedur verwendet werden. Somit kann beispielsweise im Job auf neue Nachrichten gewartet und gleichzeitig in der aktuellen Prozedur Nachrichten versendet werden. Hierbei sollte jedoch eine Seite nur lesen und eine nur schreiben.
Die Socket-Verbindung muss nur auf der Seite geschlossen werden, die JobStart () aufgerufen hat. Wird der Socket auf der Seite des Jobs geschlossen, wird die Verbindung auf beiden Seiten getrennt. Jedoch bleibt der Socket-Deskriptor in der Prozedur, die den Job gestartet hat, erhalten. Dieser muss dann separat mit SckClose () geschlossen werden. Am Ende des Jobs wird die erzeugte Kopie des Socket-Dekriptors entfernt. Die Socket-Verbindung bleibt am Ende des Jobs erhalten und kann in der aufrufenden Prozedur bis zum SckClose () verwendet werden.
Es kann kein Socket-Deskriptor angegeben werden, der mit einer der _SckTls... -Optionen erzeugt wurde.
Der Rückgabewert ist die Job-Id des neuen Jobs (Wert > 0). Ist der Job bereits durchgeführt, bevor JobStart() zurück gekommen ist, oder soll der Client, der Soa-Service oder der aktuelle Job beendet werden, wird _ErrTerminated zurückgegeben. Falls beim Start des Jobs ein Fehler aufgetreten ist, enthält der Rückgabewert den Fehlerwert (Wert < 0). Die Job-Id ist innerhalb des laufenden Tasks eindeutig. Sie wird zum Erzeugen eines Kontroll-Objekts mit JobOpen () benötigt.
Ist die Option (int1) _JobStartNoRTE angegeben, werden keine Laufzeitfehler ausgelöst. Statt dessen wird der Wert des Laufzeitfehlers als Fehlerwert zurückgeliefert.
Mögliche Laufzeitfehler:
_ErrValueInvalid: Der in (int1) übergebene Wert ist nicht gültig._ErrNoProcInfo: Prozedur ist nicht vorhanden oder wurde nicht übersetzt_ErrNoSub: Prozedurfunktion ist nicht vorhanden