Das FreeOnTerminate ist nicht nötig, da es im Constructor des TAnonymousThread schon auf true gesetzt wird.
Delphi-Quellcode:
TThread.CreateAnonymousThread(procedure
begin
...
end).Start;
// oder
TAnonymousThread.Create(procedure
begin
...
end).Start;
Man könnte aber auch das FreeOnTerminate auf false setzen und eine Warteschleife (ähnlich dem
Delay) anhängen, welche auf den Thread wartet, aber die
GUI sich aktualisieren läßt.
Die anonymen Methoden können sogar Variablen hin und her verwalten.
Delphi-Quellcode:
proedure Test;
var
xyz: string;
begin
xyz := 'abc';
TThread.CreateAnonymousThread(procedure
var
i: Integer;
begin
for i := 0 to 29 do begin
xyz := xyz + IntToStr(i mod 10);
Sleep(1000);
end;
TThread.Synchronize(nil, procedure
begin
ShowMessage(xyz);
end;
end).Start;
end;
Und das Schöne, man sieht hier sogar direkt den Programmablauf, was sich aber eher nur für kurze Methoden eignet, also für längeren Code sollte man besser eine getrennte Prozedur/Methode übergeben.