IDisposable interface:
*IDisposable interface
IDisposable to make sure they call the Dispose method when they are finished using the object. There is nothing in the CLR that directly searches objects for a Dispose method to invoke.
Dispose on all of the objects that your class uses when you implement your own Dispose method.
Dispose, although it should ideally be called only once. This can be achieved by adding a private bool variable to your class and setting the value to true when the Dispose method has run.