Objekte ordnungsgemäß mit Dispose und Destruktor (Finalize) zerstören

Im Beispiel wird gezeigt, wie ein Objekt prinzipiell ordnungsgemäß zerstört werden kann. Dispose() wird dabei vom Code aus aufgerufen, der Destruktor zu einem unbestimmten späteren Zeitpunkt vom GarbageCollector.

  • weiterführende Informationen zu Destuktoren, Finalize, Dispose: Link
public class MyClass : IDisposable
{
    private bool _bDisposed = false;

    // Konstruktor
    public MyClass()
    {
    }

    // Destruktor, Ersatzmakro für
    // protected override void Finalize()
    ~MyClass()
    {
        this.Dispose(false);
    }

    // öffentliche Dispose-Methode zum Aufräumen
    public void Dispose()
    {
        this.Dispose(true);
    }

    // interne Dispose-Methode
    private void Dispose(bool bDisposing)
    {
        if (!_bDisposed)
        {
            if (bDisposing)
            {
                // hier managed Resourcen freigeben
            }
        }

        _bDisposed = true;
    }
}