Vielen Dank an Euch beide!
Mir war die Reihenfolge klar, ich möchte ja den Taskinhalt asynchron ausführen.
Nur habe ich nicht verstanden das ich die Threads (Main und den Task) synchronisieren muss resp. dass die
VCL Implementierung auch ohne den Sync funktionierte.
Ich habe nun bei beiden Beispielen denselben Aufruf laufen lassen und das Ergebnis ist bei beiden dasselbe und korrekt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
// uses System.Threading
var
aTask: ITask;
begin
ShowMessage ('Before TTask');
aTask := TTask.Create (procedure
begin
sleep (5000);
TThread.Synchronize(nil,
procedure
begin
ShowMessage ('During TTask');
end);
end);
aTask.Start;
ShowMessage ('After TTask');
end;
Die Messages erscheinen bei
VCL und FMX in der gewünschten Reihenfolge:
1. "Before TTask"
2. "After TTask"
3. "During TTask"