Delphi-Quellcode:
repeat
if WaitForSingleObject(FDataClass.NewDataEvent, 100) = WAIT_OBJECT_0 then
begin
PData := FDataClass.ExtractFirst;
if Assigned(PData) then
begin
repeat
try
Verarbeite(PData^);
finally
Dispose(PData);
end;
PData := FDataClass.ExtractFirst;
until not Assigned(PData);
end;
end;
until Terminated;
end;
?
Den Event würde ich drin lassen um die CPU zu entlasten wenn es gerade mal nichts zu tun gibt und ansonsten sofort loszulegen. Man könnte auch "INFINITE" warten, dann muss aber ins Destroy auf jeden Fall ein SetEvent um den Thread abzubrechen.