Implementing IDisposable
Classes that
need explicit destruction semantics or wrap managed resource usually implement IDisposable to allow for predictable
destruction outside of garbage collection. As I was
just reminded by a defect in my code, all classes that
implement IDisposable must provide a finalizer (C# uses destructor syntax: ~MyClass) to handle freeing
resources when Dispose is not called. Additionally, the
Dispose method should call should call the
GC.SuppressFinalize method
for the object it is disposing. From MSDN, "If the
object is currently on the finalization queue,
GC.SuppressFinalize prevents its Finalize method from
being called."
For more information, please see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemIDisposableClassDisposeTopic.asp