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 

Die TASK-Funktionen

Siehe auch TaskFinished, TaskCanceled, TaskCompleted, TaskStatus, TaskGetLastError, TaskCancel