Einzelnen Beitrag anzeigen

DocE

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

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

  Alt 11. Aug 2006, 10:12
Hallo Muetze,

Zitat von Muetze1:
Vielleicht hast du dem VCL Thread vor dem freigeben deines Threads noch nicht genügend Zeit gelassen die aufgelaufenen WM_TIMER Botschaften aus seiner Warteschlange abzuarbeiten, weshalb nach dem freigeben durch dein Thread weitere Ereignisse auflaufen?
Eigentlich dürften überhaupt keine WM_TIMER Botschaften auflaufen...

Ich habe noch ein bißchen rumprobiert (einen "eigenen" TMyTimer geschrieben und anschließend auf den constructor, den destructor und eine leere WndProc reduziert) und herausgefunden, dass es an folgendem liegt:

Delphi-Quellcode:
destructor TMyAllocate.Destroy;
begin

  Classes.DeallocateHWnd(FWindowHandle);
  (...)
end;
Läßt man DeallocateHWnd weg, kommt es nicht mehr zu diesem Fehler, lediglich zu einem Speicherüberlauf nach vielen erstellten Threads, da das Window ja nicht mehr richtig freigegeben wird.

Weiß jemand, ob DeallocateHWnd einen Synchronized-Aufruf benötigt und evtl. warum?


Grüsse
...Doc
  Mit Zitat antworten Zitat