JobEvent
obj -> JobEvent([int1])
Job-Ereignis auslösen
Details
- obj: Job -Objekt oder JobControl -Objekt
- int1: Minimale Zeitspanne seit letztem Aufruf in Millisekunden
- Resultat:
intFehlerwert - Siehe: Verwandte Befehle ,
EvtJob
Mit dieser Anweisung wird ein Ereignis in die Ereigniswarteschlange des Betriebssystems eingefügt. Das Ereignis wird im Client aufgerufen, wenn die Ereignisse, die vor diesem eingefügt wurden, abgearbeitet sind. Zu welchem Zeitpunkt das Ereignis ausgelöst wird, kann nicht genau bestimmt werden.
Es sind zwei verschiedene Szenarien möglich:
-
Der Aufruf von
JobEvent() erfolgt in einem Job , das Ereignis wird dann in dem Dialog ausgelöst, welcher auf Seite des Jobstarters beiJobOpen ()angegeben wurde. In (obj) wird das Job -Objekt des Jobs angegeben. -
Der Aufruf von
JobEvent() erfolgt auf der Seite des Jobstarters, das Ereignis wird dann in dem Dialog ausgelöst, welcher auf Seite des Jobs mittelsJobControl ()und der Option_JobEventReceiverangegeben wurde. In (obj) wird das JobControl -Objekt des Jobstarters angegeben.
Im Parameter (int1) kann optional die minimale Zeitspanne in Millisekunden angegeben werden, die seit dem letzten Aufruf von JobEvent() vergangen sein muss. Ist diese noch nicht vergangen, wird der Fehlerwert _ErrLocked zurückgegeben.
Das Resultat _ErrUnavailable entsteht, wenn es keinen Empfänger-Dialog für das Ereignis gibt. Dies ist der Fall, wenn bei JobOpen () beziehungsweise bei JobControl () - mit der Option _JobEventReceiver - kein Dialog angegeben wurde. Sofern bereits ein JobEvent an den Dialog gesendet und noch nicht verarbeitet wurde, gibt die Funktion das Ergebnis _ErrInProgress zurück.
Beispiel:
// Start des Tasks im Client
tJobID # JobStart(_JobThread, 10, 'JobTest:Work');
if (tJobID > 0)
{
tJobHdl # JobOpen(tJobID, aEvt:Obj->WinInfo(_WinFrame));
...
}
// Task-Funktion
sub Work
(
aObjHdl : handle; // Job-Objekt
aEvtType : int; // Event-type
)
...
// Schleife im Task
while (!aObjHdl->spStopRequest)
{
...
// Fortschritt signalisieren
aObjHdl->spJobStatus # tProzent;
aObjHdl->JobEvent(125);
}
...
// Event im Client
sub EvtJob
(
aEvt : event; // Ereignis
aJobControl : handle; // Job-Kontroll-Objekt
) : logic;
{
$prgProgress->wpProgressPos # aJobControl->spJobStatus;
return(true);
}
Mögliche Laufzeitfehler:
_ErrHdlInvalid: In (obj) wurde kein gültiger Deskriptor eines Job - oder JobControl -Objektes übergeben.