Success story and tips for debugging Win Forms
I have a few of these WinForms leaks under my belt now and thought I'd share my lessons learned:
* I know this is no great insight, but static events are the root of many managed leaks. Be very suspicious of them when debugging.
* When working in a WinForms application, watch objects of type System.Windows.Forms.PropertyStore. They are used heavily in the WinForms code and almost anything that you leak in WinForms will show as a large number of PropertyStore objects leaking. You can follow their retention graph up to the culprit in your code.
* You can really effectively narrow down your problem by varying your "steps to reproduce" and watching what happens in ANTS. I found a key clue by disabling an option in our application. I disabled the option, re-ran the steps and, no leak.