Finalizers with Dispose() in C# -


see code sample msdn: (http://msdn.microsoft.com/en-us/library/b1yfkh5e(v=vs.100).aspx)

// design pattern base class. public class base: idisposable {   private bool disposed = false;    //implement idisposable.   public void dispose()   {       dispose(true);       gc.suppressfinalize(this);   }    protected virtual void dispose(bool disposing)   {       if (!disposed)       {           if (disposing)           {               // free other state (managed objects).           }           // free own state (unmanaged objects).           // set large fields null.           disposed = true;       }   }    // use c# destructor syntax finalization code.   ~base()   {       // call dispose(false).       dispose (false);   } } 

in dispose() implementation calls gc.supressfinalize();, provide destructor finalise object.

what point of providing implementation destructor when gc.suppressfinalize() called?

just little bit confused intentions are?

there 2 scenarios:

  • your code calls dispose (preferred) , finalizer canceled, eliminating overhead.
  • your code 'leaks' object , gc calls finalizer.

Comments

Popular posts from this blog

android - Spacing between the stars of a rating bar? -

aspxgridview - Devexpress grid - header filter does not work if column is initially hidden -

c# - How to execute a particular part of code asynchronously in a class -