You can call this function to explicitly dispose of an object
and reduce the garbage collection overhead.
This method follows the standard design pattern for objects
implementing the IDisposable interface. The protected Dispose
method can be overridden for sub-classes wishing to dispose of
Do not attempt to use an object after calling Dispose.