Hallo!
Habe ein Verständnisproblem bei TTask.
Wollte nur Variablen der "Hauptprocedur" an den Task beim Start übergeben.
Jedoch bekomme ich nicht die richtigen Werte (meist -> 1,2,3,4,6,6).
Ich verstehe ja, das die Tasks unabhängig/zeitversetzt gestartet werden - nur wie bekomme ich Variablen "synchronisiert" beim Start des Tasks in den Task.
Hoffe habe mich irgendwie verständlich ausgedrückt.
Delphi-Quellcode:
SetLength(tasks, anz);
for i := 0 to anz - 1 do
begin
fn := Files[i].Filename;
s := fn + ' wird heruntergeladen...';
line := Memo1.Lines.Add(s);
Files[i].Zeilennummer := line;
tasks[i] := TTask.Create (
procedure ()
var j: Integer;
tfn, ss: String;
begin
TInterlocked.Exchange(j, i); // !!?? zu spät?
TThread.Synchronize(nil,
procedure
begin
tfn := fn; // !!?? zu spät?
end);
ok := DownloadFile(tfn); // Herunterladen - zeitintensiv
TThread.Synchronize(nil,
procedure
begin
ss := tfn + ' wurde heruntergeladen.';
Memo1.Lines.Add(IntToStr(j) + ' - ' + ss);
end);
end);
tasks[i].Start;
end;