Zum Hauptinhalt springen

JobEvent

obj -> JobEvent([int1])

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle

Job-Ereignis auslösen

Details

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:

  1. Der Aufruf von JobEvent() erfolgt in einem Job , das Ereignis wird dann in dem Dialog ausgelöst, welcher auf Seite des Jobstarters bei JobOpen () angegeben wurde. In (obj) wird das Job -Objekt des Jobs angegeben.

  2. Der Aufruf von JobEvent() erfolgt auf der Seite des Jobstarters, das Ereignis wird dann in dem Dialog ausgelöst, welcher auf Seite des Jobs mittels JobControl () und der Option _JobEventReceiver angegeben 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: