Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#7

AW: Best Practice : ein Object in enem anderen Thread abfragen

  Alt 26. Jan 2019, 08:16
Wenn du möchtest, dass ein Thread seine Arbeit beendet, dann rufe die Methode Delphi-Referenz durchsuchenTThread.Terminate auf.

Innerhalb des Threads kannst du die Eigenschaft Delphi-Referenz durchsuchenTThread.Terminated (protected ) abfragen, ob es da einen Wunsch nach Beendigung gibt.

Zusätzlich gibt es auch die Methode Delphi-Referenz durchsuchenTThread.TerminatedSet die man überschreiben kann. Diese wird beim erstmaligen Aufruf von Delphi-Referenz durchsuchenTThread.Terminate aufgerufen.

Grundsätzlich entscheidet der Thread immer selber ob er sich nun beendigt oder nicht, denn nur der Thread selber weiß um seinen Zustand und wann dieser gefahrlos verlassen werden kann.

Eine simple Execute-Methode in einem Thread sieht z.B. so aus:
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
  while not Terminated do
  begin
    // mach was simuliertes
    Sleep(10);
  end;
end;
Der läuft jetzt so lange, bis man Delphi-Referenz durchsuchenTThread.Terminate aufruft (was im Übrigen von Delphi-Referenz durchsuchenTThread.Destroy intern auch aufgerufen wird).
  Mit Zitat antworten Zitat