Einzelnen Beitrag anzeigen

IMPEGA

Registriert seit: 19. Jan 2008
Ort: Brhv
73 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: ThreadPool Threads auf 3 begrenzen Pproblem

  Alt 29. Jan 2021, 12:23
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;
  Mit Zitat antworten Zitat