Die Execute-Methode wird nur einmal ausgeführt.
Ist die durch, dann ist der Thread fertig und kann nicht wieder neu gestartet werden.
Fazit: Eine Schleife einbauen
Grund: Das zweite Resume setzt den Thread nach dem "Suspend" fort und der Thread beendet sich dann, da er danach nichts mehr zu tun hat.
Aber ich würde eher vom Pausieren abraten und stattdessen irgendein "WaitFor" da hin tun und dann mit Events abeiten. (Thread wartet, bis Event gefeuert wird)
Also mit Pausieren funktionierts jetzt bei mir ganz gut, die Schleife war ja schon da:
Delphi-Quellcode:
procedure TmyThreadObject.Execute;
var
E: TmyAction;
begin
while not Terminated do begin
if Actions.Count = 0 then begin
Sleep(1000);
Continue;
end;
E:= Actions[0];
// Do some Code
end;
end;
Was sind denn jetzt die Vor- und Nachteile von Sleep und WaitFor?
EDIT: Die Vorgehensweise innerhalb der Execute-Methode erinnert mich inzwischen stark an die Entwicklung von Systemdiensten, die man auch in eine bedingte Schleife schickt.