Einzelnen Beitrag anzeigen

DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#6

Re: TThread und TTimer - Free führt zu Exceptions

  Alt 11. Aug 2006, 00:08
Hallo onlinekater,

Zitat von onlinekater:
Somit spaltet TTimer einen eigenen Thread ab.

Und Aufrufe zwischen verschiedenen Threads müssen nun einmal synchronisiert werden.
Heißt das, dass TMeineKomponente "synchronized" freigegeben werden muss, da TTimer ebenfalls einen Thread erzeugt?

Ich finde das ganze dennoch etwas unlogisch. Der Timer war nie Enabled, also aktiv... Wieso macht der plötzlich nach der Freigabe Probleme? Ein Free auf den Timer sollte doch eigentlich das ganze ordentlich beenden.

Soweit ich das überblicken kann, würde ich TTimer nicht als einen Thread beschreiben, sondern eher, als eine Komponente, die Windows-Botschaften ausliest und bei WM_TIMER das Ereignis auslöst. Das Auslesen von Windows-Botschaften passiert, meiner Meinung nach, nur im idle Zustand, also wenn nichts anderes läuft bzw. Application.ProcessMessages aufgerufen wird. Sehe daher keinen Synchronisationszwang. Es ist für mich einfach unverständlich warum der Timer nachdem er freigegeben wurde, weiter Timer-Ereignisse auslösen will, dies jedoch zu einem Fehler führt...

Zitat von onlinekater:
Btw: In dem Destroy von TMeineKomponente kannst Du Dir das Zerstören des Timers imho schenken, da Du diesem Deine Komponente als Owner zugewiesen hast und das Free somit automatisch ausgeführt wird.
Das Freigeben des Timers hatte ich vorher nicht im Destroy. War nur ein Versuch die Exceptions zu beheben -> brachte jedoch keinen Unterschied.

Noch eine Anmerkung zu den Fehlermeldungen: Diese kommen jeweils im TTimer eingestellten Intervall nach Freigabe der übergeordneten Komponente. Es scheint so, als lebe der Timer weiter, jedoch ohne eigentlich zu existieren.


Grüsse
...Doc
  Mit Zitat antworten Zitat