Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TTimer läuft nicht trotz Enabled (https://www.delphipraxis.net/156499-ttimer-laeuft-nicht-trotz-enabled.html)

Angel4585 4. Dez 2010 11:19

TTimer läuft nicht trotz Enabled
 
Hallo,

ich habe einen TTimer, Intervall ist auf 100 ms und er ist enabled.
In der OnTimer setze ich enabled auf false und arbeite alles ab.

Später setze ich in einem andern Thread den Timer wieder auf Enabled=true.
Den Wert hat er auch, hab ich per Debugging ermittelt.

Seltsamerweise wird das OnTimer-Event nichtmehr ausgelöst.
Werte sind noch alle wie davor.

Kann mir jemand sagen woran das liegen kann? :gruebel:

Wenn ich den Timer direkt nach abarbeiten der ontimer in der ontimer selbst wieder auf enabled=true setze läuft er weiter.

Ich mach das ganze weil: Ich verwende die ShutdownBlockReason Methoden um den Shutdown zu blockieren und die müssen aus dem Hauptthread oder so aufgerufen werden. Wenn ich die aus nem andern Thread aufrufe bekomme ich die Meldung "Zugriff verweigert" steht auch so in der Hilfe bzw msdn.
Deswegen setze ich einen Timer ein der das machen soll und das klappt normal auch, nur der timer startet eben nichtmehr.

himitsu 4. Dez 2010 12:08

AW: TTimer läuft nicht trotz Enabled
 
Thread?

sowas macht man nicht ... die VCL ist nicht threadsicher


Ein TTimer erzeugt sich ein eigenes unsichtbare Nachrichten-Fensterchen und damit von Fenstern die Nachrichten verarbeitet werden, muß im selben Thread, wo soein Fenster erzeugt wurde, auch eine Nachrichtenschleife die Nachrichten verarbeiten.
Und über Threadgrenzen hinweg greift man nicht ungesichert auf solche Objekte zu!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 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