Es gibt auch noch eine ganz billige Methode ohne Thread. Dabei wird der Code am Ende der Methode/Prozedur ausgeführt:
Delphi-Quellcode:
ILater = interface
['{CF68F59B-FA67-4915-B1DB-F3DAA1A3D929}']
end;
TLater = class( TInterfacedObject, ILater )
private
FProc : TProc;
protected
constructor Create( AProc : TProc );
public
class function Execute( AProc : TProc ) : ILater;
destructor Destroy; override;
end;
{ TLater }
constructor TLater.Create( AProc : TProc );
begin
inherited Create;
FProc := AProc;
end;
destructor TLater.Destroy;
begin
FProc( );
inherited;
end;
class function TLater.Execute( AProc : TProc ) : ILater;
begin
Result := TLater.Create( AProc );
end;
allerdings werden die in umgekehrter Reihenfolge der Erstellung abgearbeitet
Delphi-Quellcode:
procedure TForm1.Button2Click( Sender : TObject );
begin
ListBox1.Items.Add( 'first' );
TLater.Execute(
procedure
begin
ListBox1.Items.Add( 'second' );
end );
TLater.Execute(
procedure
begin
ListBox1.Items.Add( 'third' );
end );
ListBox1.Items.Add( 'fourth' );
end;
und in der Listbox steht
Code:
first
fourth
third
second
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)