was mir bei dem Quelltext auffällt:
Delphi-Quellcode:
procedure TMainGUI.tmrAblaufTimer(Sender: TObject);
begin
MeinGeraet.HoleDies;
Application.ProcessMessages; // angenommen mein Obj ist schon freigegeben (dann knallts)
MeinGeraet.HoleJenes;
Application.ProcessMessages;
MeinGeraet.HoleDas;
end;
wenn HoleDies, HoleJenes oder HoleDas etwas länger braucht wird bereits das nächste Timer-Event aufgerufen während bereits im Event etwas abgearbeitet wird.
Daher lieber so:
Delphi-Quellcode:
procedure TMainGUI.tmrAblaufTimer(Sender: TObject);
begin
TTimer(Sender).Enabled = False;
MeinGeraet.HoleDies;
Application.ProcessMessages; // angenommen mein Obj ist schon freigegeben (dann knallts)
MeinGeraet.HoleJenes;
Application.ProcessMessages;
MeinGeraet.HoleDas;
TTimer(Sender).Enabled = True;
end;