Task-Funktionen

Die Task-Funktionen sind für das Abarbeiten und Auswerten von Aufgaben zuständig, die durch TASK-Objekte repräsentiert werden. Da die Aufgabe eines TASK-Objekts in einem eigenen Hintergrundprozess des Erstellers abgearbeitet wird, belastet die hierzu benötigte Abarbeitungszeit in keinerweise die Ausführungsdauer des Zyklusprogramms. Dies setzt allerdings voraus, dass der Abarbeitungsstand eines TASK-Objekts zyklisch ausgewertet wird, um dann auch das Ergebnis der Aufgabe abrufen zu können. In den Beispielen der Task-Funktionsbeschreibungen wird die switch-case Methode verwendet, da sich mit dieser das Fortschreiten einer asynchronen Abarbeitung am Einfachsten abbilden lässt.

Vorgehensweise

Wird beim Aufruf einer asynchronen CPL-Funktion (Suffix: Async) ein TASK-Objekt zurückgeliefert, so wird diese asynchrone Aufgabe in die interne Warteschlange (FIFO-Speicher) des Erstellers eingetragen (bei RestFullRequestAsync ist der Ersteller das REST-Objekt rest). Läuft dort bereits eine Aufgabe, so verbleibt die neue Aufgabe in der Warteschlange und wartet dort bis die aktuell laufende Aufgabe abgeschlossen ist. Nach Abschluss der laufenden Aufgabe wird in der Warteschlange geprüft, ob ein wartendes TASK-Objekt vorhanden ist. Ist ein wartendes TASK-Objekt vorhanden, so wird es aus der Warteschlange entfernt und deren Aufgabe abgearbeitet. Mit der Funktion TaskStatus kann der aktuelle Zustand eines TASK-Objekts im Klartext ausgelesen werden.
Eine Aufgabe, also ein TASK-Objekt, kann jederzeit mit TaskCancel abgebrochen werden, sodass sie entweder aus der Warteschlange entfernt wird oder deren laufende Abarbeitung abgebrochen wird. Um den Abschluss der Aufgabe eines TASK-Objekts festzustellen, sollte TaskFinished zyklisch aufrufen werden. Da TaskFinished nur zurückgibt ob die Aufgabe beendet wurde, sagt sie nichts darüber aus was zum Beenden der Aufgabe führte - dies muss anschließend geklärt werden. Lieferte TaskFinished true zurück, kann nun mit TaskSuccessful geprüft werden, ob die Aufgabe erfolgreich durchgeführt wurde und das Ergebnis der Aufgabe mit einer der Funktionen TaskGetResultArray, TaskGetResultBool, TaskGetResultInt und TaskGetResultString abgeholt werden kann. Sollte TaskSuccessful false liefern, kann mit den Funktionen TaskAborted, TaskCanceled und TaskGetLastError der Grund für den Fehlschlag der Ausführung ermittelt werden. Nach Abschluss und Auswertung der Abarbeitung kann das TASK-Objekt mit TaskClose geschlossen und zerstört werden.


Abarbeitungsstand auslesen

TaskFinished, TaskAborted, TaskCanceled, TaskCompleted, TaskStatus

Abarbeitung abbrechen

TaskCancel

Überprüfen ob Aufgabe erfolgreich abgeschlossen wurde

TaskSuccessful, TaskGetResultArray, TaskGetResultBool, TaskGetResultInt, TaskGetResultString

Fehler auslesen, der während der Ausführung der Aufgabe aufgetreten ist

TaskGetLastError

TASK-Objekt schließen

TaskClose