Holger Stehle

Softwareentwicklung und -architektur

« Ressourcen freigeben

Dank verwaltetem Code und automatischer Speicherbereinigung muss man sich bei C# zumeist nicht explizit darum kümmern, angeforderte Ressourcen wieder freizugeben. An manchen Stellen kann dies jedoch notwendig sein: Dies ist beispielsweise der Fall, wenn nicht verwaltete oder externe Ressourcen (z. B. Dateien, Datenbanken) involviert sind.

Zur Freigabe von Ressourcen sollte die entsprechende Dispose()-Methode aufgerufen werden, welche Objekte zur Verfügung stellen, welche IDisposable implementieren. Dies kann beispielsweise wie folgt passieren:

Class obj = new Class();

try {
    /**
     * Anwendungs-Code
    **/
} finally {
    if(obj != null) {
        obj.Dispose();
    }
}

Es gibt jedoch noch eine elegantere Variante, und zwar mit Hilfe der using-Anweisung:

using(Class obj = new Class()) {
    /**
     * Anwendungs-Code
    **/
}

Durch dieses Vorgehen werden die Ressourcen automatisch nach Verlassen des Gültigkeitsbereichs freigegeben; dazu wird im Hintergrund (in etwa) der oben genannte "manuelle" Code generiert. Zu beachten gilt, dass der using-Block – wie bereits durch die umschließenden geschweiften Klammern zu sehen – einen eigenen Gültigkeitsbereich darstellt, was demnach bei Variablendeklaration und -verwendung berücksichtigt werden muss.