Thema: Delphi TTask wird nicht beendet

Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.094 Beiträge
 
Delphi 12 Athens
 
#2

AW: TTask wird nicht beendet

  Alt 23. Apr 2020, 08:10
Delphi-Quellcode:
procedure TForm1.A;
begin
  while FThreadsActive do
    begin
      sleep(10);
    end;
end;

procedure TForm1.B;
var
  i: Cardinal;
begin
  while FThreadsActive and not TThread.CurrentThread.CheckTerminated do
    begin
      sleep(50);
      inc(i);
      TThread.Queue(TThread.CurrentThread, procedure
                       begin
                         edit1.Text := format('%d %d',[integer(TThread.CurrentThread), i]);
                       end);
    end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FThreadsActive := False;
end;
So von Prinzip her, ich würde die FThreadsActive dann aber nur mit Interlocked/Atomic Funktionen anfassen.

Geändert von Rollo62 (23. Apr 2020 um 08:13 Uhr)
  Mit Zitat antworten Zitat