Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Laufende whileschleife auf Knopfdruck unterbrechen

  Alt 14. Feb 2015, 14:10
Dieses lässt sich insgesamt auch sehr schön generalisieren.

Eigentlich habe ich eine Aktion, die ausgeführt werden soll. Diese kann gestartet und während der Ausführung abgebrochen werden. Schön ist dann noch eine Benachrichtigung am Ende der Aktion.

Erst vor kurzem wurde hier das Command-Pattern angesprochen, dass hervorragend dazu passt:
Delphi-Quellcode:
ICommand = interface
  function CanExecute : Boolean;
  procedure Execute;
end;
Eine Aktion würde demnach so aussehen:
Delphi-Quellcode:
TActionResult = ( arCancelled, arException, arFinished );
TActionFinishedEvent = procedure ( Sender : TObject; ActionResult : TActionResult );

IAction = interface
  property StartCommand : ICommand;
  property CancelCommand : ICommand;
  property OnFinished : TActionFinishedEvent;
end;
Genau damit würde ich ansetzen. Ob die dann mit einem Thread oder eben mit Application.ProcessMessages ist erst mal schnurz (Threads wären hier aber schon die richtige Wahl).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat