Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu TTimer (https://www.delphipraxis.net/119507-frage-zu-ttimer.html)

chamop87 27. Aug 2008 18:35


Frage zu TTimer
 
Hallo,
ich habe folgende frage zu TTimer.
wenn man timer1.interval := 50 setzt und in der TTimer-procedure den Quellcode der zb. 10ms benötigt, is aber eigendlich auch egal. führt die procedure dann den code aus und wartet dann die 50ms (also 10ms + 50ms) oder wartet die procedure dann nur 40 ms damit die gesamtzeit bei 50ms liegt?

Danke schon mal im voraus!

slan

mkinzler 27. Aug 2008 18:36

Re: Frage zu TTimer
 
Die Methode wird alle 50ms gestartet, egal wie lange sie dauert

chamop87 27. Aug 2008 18:40

Re: Frage zu TTimer
 
danke für die antwort, das wars was ich wissen wollte;)

Viktorii 28. Aug 2008 07:26

Re: Frage zu TTimer
 
Zitat:

Zitat von mkinzler
Die Methode wird alle 50ms gestartet, egal wie lange sie dauert

Aber doch auch nur, wenn der auszuführende Code in der Timer Routine weniger als 50 ms benötigt, oder? Wenn der Code beispielsweise 60 ms benötigt, springt der Timer nach dem verlassen sofort wieder in die Routine und das 'Aufrufintervall' wäre somit 60 ms, oder sehe ich das falsch?

mkinzler 28. Aug 2008 07:39

Re: Frage zu TTimer
 
Der Code im Timer läuft in einem Thread. Ich weiss nicht, was passiert wenn der Thraed noch läuft, ob der 2. Aufruf ignoriert wird oder der 1. abgebrochen

DeddyH 28. Aug 2008 07:47

Re: Frage zu TTimer
 
Zitat:

Zitat von mkinzler
Der Code im Timer läuft in einem Thread.

Bist Du Dir da ganz sicher? Wenn ich das richtig in Erinnerung habe, wird einfach ein Event bei der Message WM_TIMER ausgelöst, da ist nix mit Thread.

itashadow 28. Aug 2008 09:20

Re: Frage zu TTimer
 
soweit ich weiss läuft so nen timer in nem eigenen thread und wenn das event vom timer zu lange braucht wird einfach ein 2. gestartet

DeddyH 28. Aug 2008 09:23

Re: Frage zu TTimer
 
Unter Delphi 5 sieht das so aus:
Zitat:

Delphi-Quellcode:
procedure TTimer.WndProc(var Msg: TMessage);
begin
  with Msg do
    if Msg = WM_TIMER then
      try
        Timer;
      except
        Application.HandleException(Self);
      end
    else
      Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);
end;

...

procedure TTimer.Timer;
begin
  if Assigned(FOnTimer) then FOnTimer(Self);
end;

Nicht mehr und nicht weniger.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz