Einzelnen Beitrag anzeigen

Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
213 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Threads und UI aktualisieren

  Alt 30. Okt 2019, 11:16
Interessantes Thema.

Habe ein bisschen ausprobiert:

Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
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
            MainForm.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);
    lblStatus.Repaint; // lblRunning wird aktualisiert
    lblRunning.Repaint; // bringt nix
    //self.Update; // nur lblRunning wird aktualisiert
    //Application.ProcessMessages; // beide werden aktualisiert
    Inc(i);
  end;
end;
  Mit Zitat antworten Zitat