Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Thread restart

  Alt 20. Feb 2015, 06:38
Lass doch deinen Code fast einfach, wie er ist:
Delphi-Quellcode:
Procedure TMyThread.Execute;
Begin
  while not terminated do
    case TriggerEvent.WaitFor(-1) of
      wrSignaled : ExecuteTheAction();
      wrTimeout,
      wrAbandoned : Terminate;
      wrError : { Fehler loggen };
    end;
end;

procedure TMyThread.RestartExecution;
Begin
  TriggerEvent.SetEvent;
end;

Constructor TMyThread.Create;
Begin
  ...
  TriggerEVent := .Create(nil, True, False, nil);
...
(Ungetestet, nur hingetippt)

Erzeuge den Thread. Er macht erst einmal nichts, sondern wartet, bis Du 'RestartExecution' aufgerufen hast.
Dann erledigt er seine Aufgabe und legt sich wieder schlafen.

Alternativ kannst Du dir mal den Workerthread-Poolanschauen. Dort wird das Konzept eines Threads etwas anders behandelt. Vielleicht ist das was.
  Mit Zitat antworten Zitat