March 2004
Intermediate to advanced
560 pages
26h 47m
English
using System; namespace Samples { public class IDisposableSample: IDisposable { private bool disposed = false; public void Dispose() { lock(this) { if(disposed) return; GC.SuppressFinalize(this); Dispose(true); disposed = true; } } public void Close() { Dispose(); } public void Dispose(bool b) { if(b) { Console.WriteLine("Dispose()/Close() called " + "explicitly by user code"); Console.WriteLine("Do cleanup necessary for " + "this case"); } Console.WriteLine("Do cleanup necessary for finalization"); } ~IDisposableSample() { Dispose(false); } public static void Main() { IDisposableSample ids1 = new IDisposableSample(); IDisposableSample ids2 = new IDisposableSample(); IDisposableSample ids3 = new IDisposableSample(); ids1.Close(); ids2.Dispose(); ...Read now
Unlock full access