wierdness with pythonwin dialogs, threads & refcounts
gmcm at hypernet.com
Fri Jun 18 02:15:42 CEST 1999
Mark Hammond writes:
> There could be a number of leaks in Pythonwin, but I dont think
> dialogs do.
> The ref count is likely to be 6, as the pywin.mfc.Dialog base class
> hooks a number of commands and messages. Each of these hooks is a
> circular reference, as a bound method is saved away. These
> references are deleted when a window recieves the WM_DESTROY
> So in a nutshell, there is nothing obvious as to why the dialog is
> leaking. The very first step would be to ensure it does not leak
> without threads.
> Otherwise, it may come down to me tracking this down, as there are
> some complicated interactions with MFC going on...
I played with this enough to find that he's onto something. Without
any threading, the dialog gets a WM_DESTROY and goes thru __del__.
When executed from a threading.Thread, it never goes thru OnDestroy.
I tried doing DoModal myself, then un-hooking the messages myself.
No luck. Perhaps because there's no parent window, and the trhead
does not have a Windows message queue?
> Dave Kirby wrote in message <3768b75e.5469224 at NNRP.UK.INSNET.NET>...
> >I have found strange behaviour (strange to me at least) when creating
> >a pythonwin dialog on a separate thread created using the standard
More information about the Python-list