What is up.
RSS icon Email icon Home icon
  • C# Gotchas

    Posted on December 14th, 2005 Alan No comments

    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

    You must be logged in to post a comment.