Aug 02
2009
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();
}
}
}
