Entwickler-Ecke

Sonstiges (Delphi) - Zeitperiodische aktionen innerhalb einer Methode ?


gregorkandare - Di 17.08.04 13:45
Titel: Zeitperiodische aktionen innerhalb einer Methode ?
Hallo,

ich möchte innerhalb einer Methode periodisch (z.B. alle 1000 msek) etwas machen (einen OPC Server abfragen). Wie mache ich das am einfachsten. Ich wollte es mit TTimer versuchen, das Problem dabei ist, das es eine Komponente ist.

Gregor :D


Stoffel1984 - Di 17.08.04 13:53

:welcome:

Hallo,

dein Stichwort lautet: Suche in: Delphi-Forum, Delphi-Library GETTICKCOUNT

Stoffel


raziel - Di 17.08.04 13:55

:welcome:

Oder gleich Motzi's Ressourcenschonendes Delay [http://www.delphi-forum.de/viewtopic.php?t=23225]...
Warum eigentlich keine Komponente?

raziel


Delete - Di 17.08.04 14:10

Wenn es nur ab 2000 laufen soll, dann kannst du auch Suche im MSDN CREATETIMERQUEUETIMER nehmen. Eine Headerübersetzung findest du hier bei mir: http://www.luckie-online.de/Downloads/DelphiUnits/ und eine Demo Anwendung mit Source, wäre bei den Downloads der IPMonitor.


Udontknow - Di 17.08.04 14:16

Ich sehe mir gerade dieses Delay von Motzi an... Dort ruft er unter anderem Application.ProcessMessages auf. Ist das eigentlich innerhalb eines anderen Threads als dem VCL-Haupt-Thread zulässig?

Cu,
Udontknow


Delete - Di 17.08.04 14:22

In einem vom Hauptthread abgespaltenen Thread ruft man einfach Suche im MSDN SLEEP auf, da ein Thread eh keine MessageLoop hat wäre es blödsinning irgendwelche Nachrichten abarbeiten zu wollen - wo sollen die denn her kommen?


Udontknow - Di 17.08.04 14:28

Zitat:
da ein Thread eh keine MessageLoop hat

Hehe, wenn er das aufruft, hat er eine! :twisted:
Nein, im Ernst, mir ist klar das das keinen Sinn macht.

Aber es könnte ja jetzt jemand auf die Idee kommen : "Oh! Delay ist ressourcenschonend! Verwende ich das besser in meinem Thread anstelle von Sleep!". Läuft dieser jenige dann nicht Gefahr, sich arge Probleme zuzuziehen, wenn der Thread plötzlich anfängt, zusammen mit dem HauptThread die Botschaften zu verarbeiten? Sollte vielleicht noch dabei geschrieben werden oder sogar zur Laufzeit abgefangen werden.

Cu,
Udontknow


Motzi - Di 17.08.04 14:47

Nein, ein Aufruf von Application.ProcessMessages ist nur im primären Thread zulässig.. für Threads muss man sich seine eigene ProcessMessages-Funktion basteln..