Versuch mal das:
Delphi-Quellcode:
ShowMessage ('1. Before TTask');
TTask.Run( procedure
begin
sleep (5000);
TThread.Synchronize(nil,
procedure
begin
ShowMessage ('2. During TTask');
end);
end);
ShowMessage ('3. After TTask');
Du erwartest hoffentlich nicht das hier 1. 2. 3. in der Reihenfolge ausgeführt wird.
Der Task wir ja im Hintergrund laufen, und irgendwann nach 5000ms ausgelöst werden.
Muss dann mit Queue oder Synchronize mit dem Hauptthread synchrnisiert werden, ansosnten gibt es Crash.
Die Reihenfolge ist
1. Before
2. After (fast zeitgleich)
// hier kannst du aber normal im Hauptthread andere Dinge machen, es bleibt reaktiv.
3. During (ca. 5000ms danach).
Ist es das was du erreichen möchtest ?
Rollo