Sorry für Doppelpost, ist aber eine weitere Frage
Ist das eigentlich korrekt wie ich den/die Parameter an Task übergebe?
Delphi-Quellcode:
procedure TForm1.ButtonThreadPoolClick(Sender: TObject);
var
Liste : TStringList;
Index : Integer;
Threads : Word;
Parameter :
string;
//HIER
begin
Parameter := '
&id=8356286';
// HIER
Threads := 3;
if Threads < TThread.ProcessorCount
then Threads := TThread.ProcessorCount;
TThreadPool.
Default.SetMaxWorkerThreads(Threads);
Label2.Caption := IntToStr(TThreadPool.
Default.MaxWorkerThreads);
Liste := TStringList.Create;
for Index := 1
to 300
do
Liste.Add(
Index.ToString);
Loader := TTask.Run(
procedure
begin
TParallel.
For(0, Liste.count - 1,
procedure(I : Integer; ALoopStatus : TParallel.TLoopState)
var
URL :
string;
begin
if Loader.Status = TTaskStatus.Canceled
then ALoopStatus.Break;
// URL := Liste[I];
URL := Liste[I] + Parameter;
// UND HIER IM THREAD
// ...
Sleep(Random(1000));
//...
TTHread.Queue(
nil,
procedure
begin
with ListView1.Items.Add
do
begin
Caption :=
URL;
end;
end);
end);
Label1.Caption := '
Fertig';
FreeAndNil(Liste);
end);
end;