Hi, so richtig kenn ich mich zwar nicht mit Web-Techniken aus, aber ich würde mir mal einen richtigen Webservice schreiben. Ist total simpel, selbst ich hab das hinbekommen.
Zu deinen Fragen:
Du musst dafür sorgen, das Du die Arbeit unterbrechen kannst. Du könntest eine Eigenschaft 'Aborted' definieren, die Du von außen setzen kannst (auch über einen Timer, dann wäre dein Timeoutproblem gelöst). In deiner Abarbeitung fragst Du diese Eigenschaft immer mal wieder ab. Blöd wird es bei langwierigen
SQL-Abfragen. Da weiss ich nicht, wie man soetwas unterbricht.
Ich würde die Arbeit in einem Try--Except kapseln. Beim Abbruch wirfst Du eine bestimmte
Exception (oder einfach ein Abort) und wertest das im Except-Teil aus, etwa so:
Delphi-Quellcode:
// Hier könnte z.B. auch noch ein Timer gestartet werden, dessen Timer-Event die 'Aborted' Eigenschaft setzt.
// Obwohl das sinnlos wäre, wenn z.B. ein langes SQL-Statement abgearbeitet wird.
Try
DoStep1;
If Aborted
Then Abort;
DoStep2;
If Aborted
Then Abort;
...
DoFinalStep;
Except
On E:EAbort
Do
// Operation aborted;
On E:
Exception Do
// Oh oh, etwas böses ist passiert
End;
Aborted := False;