TaskCancel
value TaskCancel ( value task );
Rückgabewert
Rückgabewert |
Beschreibung |
TRUE / true / 1 |
Die Abbrechen-Mitteilung wurde erfolgreich an die Hintergrundaufgabe weitergeleitet. |
FALSE / false / 0 |
Die Abbrechen-Mitteilung konnte nicht an die Hintergrundaufgabe weitergeleitet werden, da diese noch nicht gestartet wurde oder schon beendet ist. |
Parameter
rest
Die gültige TASK-Objekt, an dessen Hintergrundaufgabe eine Abbrechen-Mitteilung gesendet werden soll.
Bemerkungen
Leitet eine Abbrechen-Mitteilung an die Hintergrundaufgabe, des TASK-Objekts task.
Ein direkt nachfolgender Aufruf von
TaskCanceled
oder TaskFinished
nach TaskCancel
ist nicht sinnvoll. 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.
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 der Anfrage if (task == NULL) RestWorker = REST_ERROR; break; end RestWorker = REST_REQUEST_RUNNING; break; case REST_REQUEST_RUNNING: if (TaskFinished(task)) if(!TaskSuccessful(task)) if (TaskCanceled(task)) strLastError = TaskStatus(task); //Inhalt von strLastError: //canceled RestWorker = REST_STANDBY; break; elseif (TaskAborted(task)) strLastError = TaskStatus(task); //Inhalt von strLastError: //aborted RestWorker = REST_STANDBY; break; end 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_REQUEST_DONE: RestDisconnect(rest); RestWorker = REST_STANDBY; break; case REST_ERROR: if (rest != NULL) if (task != NULL) strLastError = TaskGetLastError(task); else strLastError = RestGetLastError(rest); end RestDisconnect(rest); end RestWorker = REST_STANDBY; break; end
Siehe auch TaskFinished, TaskAborted, TaskCanceled, TaskCompleted, TaskStatus, TaskGetLastError