AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TThread und TTimer - Free führt zu Exceptions
Thema durchsuchen
Ansicht
Themen-Optionen

TThread und TTimer - Free führt zu Exceptions

Ein Thema von DocE · begonnen am 10. Aug 2006 · letzter Beitrag vom 11. Aug 2006
 
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
 


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 +1. Es ist jetzt 12:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz