TaskCompleted
value TaskCompleted ( value task );
Rückgabewert
Rückgabewert |
Beschreibung |
TRUE / true / 1 |
Die Hintergrundaufgabe des TASK-Objekts task wurde abgeschlossen. |
FALSE / false / 0 |
Die Hintergrundaufgabe des TASK-Objekts task wurde noch nicht abgeschlossen. |
Parameter
rest
Die gültige TASK-Objekt, bei dem geprüft werden soll, ob dessen Hintergrundaufgabe abgearbeitet wurde.
Bemerkungen
Prüft, ob die Hintergrundaufgabe des TASK-Objekts task abgearbeitet wurde und nicht mit TaskCancel abgebrochen wurde. Das Ergebnis von TaskCompleted sagt nichts darüber aus, ob die Hintergrundaufgabe erfolgreich abgeschlossen wurde. Um das eigentliche Ergebnis der Abarbeitung der Hintergrundaufgabe zu prüfen, muss TaskSuccessful oder eine der TaskGetResult-Funktionen aufgerufen werden.
Gibt TaskCompleted FALSE zurück, kann dies auch bedeuten dass die Hintergrundaufgabe mit einem vorherigen TaskCancel Aufruf abgebrochen wurde. Daher sollte TaskCompleted nur dann verwendet werden, wenn TaskFinished meldet, dass die Hintergrundaufgabe beendet wurde. Nur dann kann geprüft werden, zu welchem Zeitpunkt die Aufgabe tatsächlich beendet wurde.
Beispiel
////////////////////////////////////////////////////////////////////// //Globale Variablen value rest = 0; value task = 0; value RestWorker = 0; value REST_CONNECT_START = 0; value REST_CONNECT_RUNNING = 10; value REST_REQUEST_START = 20; value REST_REQUEST_RUNNING = 30; value REST_REQUEST_DONE = 40; value REST_ERROR = -100; value REST_STANDBY = -1; string strLastError; string strResponse; ////////////////////////////////////////////////////////////////////// //_MainCycle // ////////////////////////////////////////////////////////////////////// switch (RestWorker) case REST_CONNECT_START: //ip.jsontest.com liefert als Antwort die IP-Adresse des anfragenden Clients task = RestConnectAsync(rest, "http://ip.jsontest.com"); if (task == NULL) RestWorker = REST_ERROR; break; end RestWorker = REST_CONNECT_RUNNING; break; case REST_CONNECT_RUNNING: if (TaskFinished(task)) if(!TaskSuccessful(task)) RestWorker = REST_ERROR; else TaskClose(task); RestWorker = REST_REQUEST_START; end end break; case REST_REQUEST_START: task = RestFullRequestAsync(rest, "GET", "/"); TaskCancel(task); //Absichtlicher Abbruch des TASK-Objekts if (task == NULL) RestWorker = REST_ERROR; break; end RestWorker = REST_REQUEST_RUNNING; break; case REST_REQUEST_RUNNING: if (TaskFinished(task)) if (TaskCanceled(task)) strLastError = TaskStatus(task); //Inhalt von strLastError: //canceled TaskClose(task); RestWorker = REST_REQUEST_DONE; break; elseif (TaskAborted(task)) strLastError = TaskStatus(task); //Inhalt von strLastError: //aborted TaskClose(task); RestWorker = REST_REQUEST_DONE; break; end if(!TaskSuccessful(task)) RestWorker = REST_ERROR; break; else TaskGetResultString(task, strResponse); strResponse = JsonExpand(strResponse); //Inhalt von strResponse: //{ // "ip": "82.165.12.98" //} RestWorker = REST_REQUEST_DONE; end end break; case REST_ERROR: if (rest != NULL) if (task != NULL) strLastError = TaskGetLastError(task); else strLastError = RestGetLastError(rest); end end RestWorker = REST_REQUEST_DONE; break; case REST_REQUEST_DONE: if (task != NULL) TaskClose(task); end RestDisconnect(rest); RestWorker = REST_STANDBY; break; end
Siehe auch TaskFinished, TaskAborted, TaskCanceled, TaskStatus, TaskGetLastError, TaskCancel