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)