Ja, das sind alles ähnliche Fragen, sorry, aber trotzdem danke für eine Antwort:
Die Intention:
1) Eine Aufgabe, die lange dauert, wird im Hintergund ausgeführt und aktualisiert das UI. Das funktioniert gut.
2) Das UI wartet bis die Aufgabe fertig ist und siganlisiert seineseits, dass da noch was arbeitet. Hier hab ich das Problem. Sobald ich TTAsk.WaitForAll aufrufe, wird nichts mehr aktualisiert.
Code:
var
aTasks: array of ITask;
i: Integer;
begin
SetLength(aTasks, 1);
aTasks[0] := TTask.Create(procedure()
var
i: Integer;
begin
for i := 0 to 100 do begin
Sleep(100);
TThread.Synchronize(nil, procedure()
begin
lblStatus.text := IntToStr(i);
end);
end
end);
aTasks[0].Start;
i := 1;
while not TTask.WaitForAll(aTasks, 1000) do begin
lblRunning.text := 'Running ' + IntToStr(i);
Inc(i);
end;
end;
Was übersehe ich?