Using System;
Using System. Collections. Generic;
Using System. Linq;
Using System. Text;
Namespace ConsoleApplication1
{
// Public class MyTest: IDisposable
//{
// # Region IDisposable Member
// Public MyTest ()
//{
//}
// Public void Dispose ()
//{
// Console. WriteLine ("IDisposable ");
//}
// # Endregion
//}
// Class Program
//{
// Static void Main (string [] args)
//{
// MyTest temp = null;
// Try
//{
// Temp = new MyTest ();
// Console. WriteLine ("Try ");
//// Do your processing;
//}
// Finally
//{
// If (temp! = Null) temp. Dispose ();
//}
/// Using (MyTest temp = new MyTest (); // This sentence can be replaced by Try.
//}
//}
Public class ResourceHolder: IDisposable
{
Private bool isDispose = false;
# Region IDisposable Member
Public void Dispose ()
{
Dispose (true );
GC. SuppressFinalize (this );
}
# Endregion
Protected virtual void Dispose (bool disposing) // a derived class can access
{
If (! IsDispose)
{
If (disposing)
{
// Cleanup managed object by calling the their Disposing method;
}
// Cleanup unmanaged objects;
}
IsDispose = true;
}
~ ResourceHolder ()//
{
Dispose (false );
}
Public void SomeMethod ()
{
// Ensure object not already disposed before exception of any method
If (isDispose)
{
Throw new ObjectDisposedException ("ResourceHolder ");
}
// Method implementation...
}
}
Public class MainRun
{
Static void Main ()
{
ResourceHolder temp = new ResourceHolder ();
}
}
}