Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: System.Threading: Kann man einen Task / Threadpool beenden?

  Alt 14. Jan 2015, 22:26
Ja und Nein.
Ja, man kann einen Task beenden
Nein einen Sleep kann ich nicht unterbrechen.

Wie unterbreche ich einen Task:

Indem man den Status des aktuellen Tasks abfragt mit TTask.CurrentTask.Status
Delphi-Quellcode:
procedure Foo;
begin
  TTask.Run(
      procedure
    begin
      // nur loslaufen, wenn kein Abbruch
      if not TTask.CurrentTask.Status = TTaskStatus.Canceled
      then
        begin

        end;
    end );

  TTask.Run(
    procedure
    var
      LFinished: Boolean;
    begin
      // Arbeiten bis Abbruch oder Fertig
      while not( TTask.CurrentTask.Status = TTaskStatus.Canceled ) or LFinished do
        begin

        end;
    end );
end;
Das sollte dann auch dein Problem lösen.

Falls es da immer noch Probleme gibt, dann schau dir mal die Fixes für die Threading-Unit an: Kuckst du auf SO (Hat mich ein paar graue Haare gekostet)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (14. Jan 2015 um 22:29 Uhr)
  Mit Zitat antworten Zitat