C# Gotchas

C# Gotchas

I ran into my first bad encounter with C# garbage collection.  The destructor I added to my main application form wasn’t being called.  I tried forcing it with GC.Collect(), nothing.

What worked was adding IDisposable as a base class and implementing Dispose(), then adding a using{} block around my main form:

using (myMainForm = new MyMainForm()

This seems to defeat the purpose of destructors, or at least the convenience of relying on them to do cleanup.

I don’t like the Dispose/using technique so I actually replaced it with a handler for the Form.Closing event.  Of course this only works with Form derived classes.

There may be something special about the main form preventing the destructor from being called.  I know the main form is being destroyed because it contains an object whose destructor DOES get called.

A few helpful web pages I googled in researching this anomoly:

Leave a Reply