Comment utiliser correctement la boucle dans un TTask? Je continue d'obtenir seulement le dernier élément de ListBox1 dans le mémo, par exemple si j'ai 5 éléments dans ListBox1, je reçois le dernier élément de ListBox1 5 fois dans memo1!, quel est le problème avec le code?Comment utiliser pour la boucle à l'intérieur d'un thread de thread TTin delphi 10
var
i: Integer;
lPath: string;
begin
for i := 0 to ListBox1.Items.Count - 1 do
begin
lPath := ListBox1.Items.Strings[i];
TTask.Create(
procedure
var
lHTTP: TIdHTTP;
IdSSL: TIdSSLIOHandlerSocketOpenSSL;
begin
lHTTP := TIdHTTP.Create(nil);
TThread.Synchronize(nil,
procedure
begin
Form1.Caption := 'Task Running...';
end
);
try
lHTTP.ReadTimeout := 30000;
lHTTP.HandleRedirects := True;
IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(lHTTP);
IdSSL.SSLOptions.Method := sslvTLSv1;
IdSSL.SSLOptions.Mode := sslmClient;
lHTTP.IOHandler := IdSSL;
Finally
try
lHTTP.Get('http://website.com/'+lPath, TStream(nil));
Finally
lHTTP.Free;
end;
end;
TThread.Synchronize(nil,
procedure
begin
Memo1.Lines.Add(lPath);
end
);
end
).Start;
end;
end;
@Phil: Cela n'a rien à voir avec OTL. C'est la nouvelle fonctionnalité de traitement parallèle dans Delphi 10 Seattle/Berlin. –
il pourrait être, mais je ne sais pas comment l'appliquer à mon code @PhilRoss – ColdZer0