Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten (https://www.delphipraxis.net/200296-auf-ende-der-eingabe-im-tedit-warten-und-inhalt-verzoegert-verarbeiten.html)

Uwe Raabe 8. Apr 2019 12:08

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten
 
Zitat:

Zitat von Rollo62 (Beitrag 1429814)
(Natürlich rede ich nicht davon wenn man irgendwo massiv zig-tausende Timer verwenden würde,
sondern von einem normalen Fall von Timer in einer handvoll Units)

Ich habe hier ein Alt-System, da laufen ca. 80 Timer gleichzeitig ohne Probleme. Es ist dabei viel wichtiger die Intervalle an die benötigen Event-Laufzeiten anzupassen, als über eine Handvoll Timer mehr oder weniger nachzudenken

Delphi.Narium 8. Apr 2019 12:15

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten
 
Einfachste Methode:

Timer am Anfang des Ereignisses ausschalten und am Ende wieder einschalten.

Besagtes Problem kenne ich nur, wenn ein (oder mehrere) Timer sich selbst "überholt", also das Timerereignis bereits ausgelöst wird, während es noch abgearbeitet wird.

Uwe Raabe 8. Apr 2019 13:37

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1429829)
Timer am Anfang des Ereignisses ausschalten und am Ende wieder einschalten.

Klar, aber das löst nicht das Problem, daß dann dauerhaft die CPU (bzw. ein Kern) ausgelastet ist, wenn die Timer-Events quasi im Dauerfeuer triggern. Da muss man sich dann schon fragen, ob so kurze Intervalle überhaupt nötig sind, wenn sie dann eh nicht eingehalten werden können.

Delphi.Narium 8. Apr 2019 13:46

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten
 
Timerintervalle sind bei mir eher im Sekunden- oder Minutenbereich, 'nen Timer alle paar Millisekunden auslösen ist eher 'ner Ausnahme. Allenfalls zur Pegelabfrage bei der Bass.dll, um "irgendwas flackern zu lassen" ;-) Aber kürzer als 20 ms macht ein System unbrauchbar.

Rollo62 8. Apr 2019 14:25

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten
 
Ja sicher, ich denke hierbei an Intervalle so um die >= 200ms.
Kürzer geht auch, wird aber auch entsprechend kritischer, da würde ich versuchen andere Lösungen zu finden.

Ich benutze oft einen Master-Timer mit einem "kleinsten gemeinsames Intervall",
welches dann durch einfache Integer-Zähler auch mehrere größere Delay-Intervalle erzeugen kann.
Das schont die Timer-Resourcen, ist aber nicht in allen Fällen anwendbar.
Insbesondere für UI-Timing, aber selbst für exaktes Scheduling im Bereich mehrerer Stunden bis Tage ist das aber normalweise durchaus ausreichend.


Und richtig:
Das Einpacken von OnTimer in FTimer.Enabled := False; .... FTimer.Enabled := True; ist ein Muss um Überläufe zu verhindern.
Es sei denn es kommt auf absolut exakte Perioden an, dann müsste man die OnTimer-Rountine besser vom Intervall entkoppeln.

dummzeuch 8. Apr 2019 16:11

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1429837)
Aber kürzer als 20 ms macht ein System unbrauchbar.

Ist nicht das minimale Timer-Interval sowieso nur ca. 40 ms ?

Uwe Raabe 8. Apr 2019 16:24

AW: Auf Ende der Eingabe im TEdit warten und Inhalt verzögert verarbeiten
 
Zitat:

Zitat von dummzeuch (Beitrag 1429841)
Ist nicht das minimale Timer-Interval sowieso nur ca. 40 ms ?

Nein, 10 ms (ich glaube seit Windows XP):
Delphi-Quellcode:
USER_TIMER_MINIMUM (0x0000000A)
(aus WinUser.h)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr.
Seite 3 von 3     123   

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