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