Microsoft formális, prim and proper feszabadítási minta

Filed Under (Uncategorized) by nameless on 02-08-2009

A Microsoft formális, prim and proper feszabadítási mintát definiált, amely megteremti a robusztusság, a fenntarthatóság és a teljesítmény kzöti egyensúlyt:

using System;
using System.Collections.Generic;
using System.Text;
 
namespace FinalizableDisposableClass
{
  public class MyResourceWrapper : IDisposable
  {
    //annak a megállapítására használatos, hogy a Dispose() már meghívásra került-e
    private bool disposed = false;
 
    public void Dispose()
    {
      //segédmetódus meghívása
      //A true érték at jez, hogy az objektumfelhasználó elindította a takarítást
      CleanUp(true);
 
      // Most szüntessük meg a véglegesítést.
      GC.SuppressFinalize(this);
    }
 
    private void CleanUp(bool disposing)
    {
      // Bizonyosodjunk meg róla, hogy még nem dobtunk el semmit.
      if (!this.disposed)
      {
        // Ha az eldobás igaz értéket eredményez, akkor dobjuk el az összes felügyelt erőforrást
        if (disposing)
        {
            // felügyelt erőforrás eldobása
        }
        // Itt kitakarítjuk a nem felügyelt erőforrásokat
      }
      disposed = true;
    }
 
    ~MyResourceWrapper()
    {
      Console.Beep();
      // A segédmetódusunk meghívása
      // A false érték azt jelzi, hogy a GC eindította a takarítást
      CleanUp(false);
    }
  }
 
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("***** Dispose() / Destructor Combo Platter *****");
 
      // A Dispose() manuális meghívása, ez nem hívja meg a véglegesítőt.
      MyResourceWrapper rw = new MyResourceWrapper();
      rw.Dispose();
 
      // Ez nem a Dispose() metódust hívja meg, hanem elindítja a véglegesítőt és sípolást
      MyResourceWrapper rw2 = new MyResourceWrapper();
    }
  }
}

Post a comment