TaskAborted
value TaskAborted ( value task );
Rückgabewert
Rückgabewert |
Beschreibung |
TRUE / true / 1 |
Die Hintergrundaufgabe des TASK-Objekts task ist während ihrer Abarbeitung durch TaskCancel abgebrochen worden. |
FALSE / false / 0 |
Der Hintergrundaufgabe des TASK-Objekts task wurde nicht während ihrer Abarbeitung abgebrochen. |
Parameter
rest
Die gültige TASK-Objekt, bei dem geprüft werden soll, ob dessen Hintergrundaufgabe während ihrer Abarbeitung abgebrochen wurde.
Bemerkungen
Prüft, ob die Hintergrundaufgabe des TASK-Objekts task während ihrer Abarbeitung mit TaskCancel abgebrochen wurde.
Gibt TaskAborted FALSE zurück, obwohl vorher ein TaskCancel Aufruf durchgeführt wurde, so bedeutet dies eventuell nur, dass die Abbrechen-Mitteilung noch nicht an die Hintergrundaufgabe weitergeleitet wurde. Aufgrund der Zeitscheiben des Betriebssystems können einige Mikrosekunden oder auch Millisekunden vergehen bis die Abbrechen-Mitteilung an die Hintergrundaufgabe weitergeleitet und dort dann ausgeführt wurde.
Ein Abfrage von TaskAborted , ohne dass vorher TaskFinished auf TRUE geprüft wurde, sollte vermieden werden, denn das Ergebnis von TaskAborted ist nur dann aussagekräftig, wenn die Hintergrundaufgabe 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", "/"); if (task == NULL) RestWorker = REST_ERROR; break; end RestWorker = REST_REQUEST_RUNNING; break; case REST_REQUEST_RUNNING: if (TaskFinished(task)) if (TaskCompleted(task)) strLastError = TaskStatus(task); //Inhalt von strLastError: //completed elseif (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, TaskCanceled, TaskCompleted, TaskStatus, TaskGetLastError, TaskCancel