what is idisposable
IDisposable is an interface defined in the System namespace. The interface defines a single method, named Dispose, that is used to perform clean-up activities for an object when it is no longer required. The method may be called manually, when an object's work is finished, or automatically during garbage collection.