Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: "Webservice" mit Indy und viele Fragen

  Alt 30. Jun 2009, 10:14
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;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat