This interface provides a
last-ditch cleanup hook with
well-known timing semantics (similar in concept to a C++ destructor).
This is called deterministic finalization.
As part of normal garbage-collection operation, the CLR looks for
(and calls if available) the object's
Finalize method right before it removes an object
from heap memory. Unfortunately, because the CLR may not
garbage-collect the object as soon as it becomes available for
collection, objects may hold onto resources for longer than
necessary. The IDisposable interface is intended
to work with language constructs to let you ensure that key resources
are released in a time-efficient manner.
Any object whose type implements the IDisposable
interface must have a corresponding Dispose( )
method defined for it. This in turn makes the object eligible for use
in the C# using block declaration. For more
details, see "Using Statement" in
Chapter 2.
If a type provides a Finalize method, then it
should also inherit this interface and provide a corresponding
Dispose( ) method. In addition, once the
Dispose( ) method is called, part of its
implementation should be to call the GC.SuppressFinalize(
) method to prevent the garbage collector from finalizing
this object again when garbage collection occurs.
public interface IDisposable {
// Public Instance Methods
public void Dispose( );
}