Hallo zusammen!
Ich ärgere mich mal wieder mit der Threadprogrammierung herum, ist für mich immer noch steiniges Neuland ^^
Ich habe ein TThread-Objekt, das in der Execute-Prozedur eigentlich alles macht was ich will. Allerdings nur beim ersten Resume. Ein zweites Resume führt nicht wieder zur Ausführung des Execute-Codes. Das TThread-Objekt wurde Suspended erzeugt und FreeOnTerminate ist FALSE.
Ich möchte den Thread so verwenden, dass er praktisch die meiste Zeit schlafend im Hintergrund liegt. Ab und zu werden durch Nutzeraktion bestimmte Aufgaben erstellt, die der Thread im Hintergrund abarbeitet. Eine Interaktion mit dem Mainthread findet nicht statt.
Delphi-Quellcode:
procedure TmyThreadObject.Execute;
var
E: TmyAction;
begin
try
while (not Terminated) and (Actions.Count > 0) do begin
E:= Actions[0];
// Do some Code
end;
finally
Suspend;
end;
end;
Oder mache ich hier einen Denkfehler und TThreads lassen sich gar nicht auf diese Weise "recyclen" so dass ich das Threadobjekt prinzipiell freen und bei Vorliegen neuer Actions (nicht im Sinne von TAction verstehen) ein neuer Thread erzeugt wird?
Grüße
Cody