AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Probleme mit TTimer durch andere Anweisungen

Probleme mit TTimer durch andere Anweisungen

Ein Thema von Benni0811 · begonnen am 26. Jan 2017 · letzter Beitrag vom 26. Jan 2017
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
7.974 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Probleme mit TTimer durch andere Anweisungen

  Alt 26. Jan 2017, 14:09
Praktische Erfahrung:
Gerade bei sehr kurzen Timerintervallen kann es passieren, dass das Ereignis bereits wieder ausgelöst wird, bevor das letzte Ereignis komplett verarbeitet wurde.
Aber nur, wenn da irgendwo ein Application.ProcessMessages im Spiel ist. Denn sonst kann ja niemand das WM_TIMER verarbeiten während man noch in der Messageloop hängt.

Am besten wäre jedenfalls vermutlich ein separater Thread, der sich zu den festgelegten Zeitpunkten mit dem Hauptthread synchronisiert und die gewünschte Aktion durchführt.
Dann belastet man die Messageloop nicht so stark und kann die Zeitpunkte auch genauer steuern.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#12

AW: Probleme mit TTimer durch andere Anweisungen

  Alt 26. Jan 2017, 14:17
Wie kann ich eigentlich, wenn ich in 'nem Timerereignis irgendwas auf dem Bildschirm optisch verändere, diese Änderung ohne Application.ProcessMessages zur Darstellung bringen?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.435 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Probleme mit TTimer durch andere Anweisungen

  Alt 26. Jan 2017, 14:29
Wie kann ich eigentlich, wenn ich in 'nem Timerereignis irgendwas auf dem Bildschirm optisch verändere, diese Änderung ohne Application.ProcessMessages zur Darstellung bringen?
In der Regel mit einem Aufruf von Refresh:

Delphi-Quellcode:
  for I := 1 to 10 do begin
    Label1.Caption := I.ToString;
    Label1.Refresh;
    CheckBox1.Checked := not CheckBox1.Checked;
    CheckBox1.Refresh;
    Sleep(1000);
  end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf