Umgang mit Objekten vom IDisposable Interface

Im .NET Framework  ist die “Entsorgung” eines Objektes ebenso wichtig wie es korrekt zu verarbeiten. Der ideale Ansatz wäre die Dispose-Methode der IDisposable-Schnittstelle in der Klasse zu implementieren, so dass nach der Verwendung eines Objektes dieser Klasse das Objekt durch den Aufruf der dispose Methode freigegeben werden kann. Unten ist ein Beispiel, in dem ein SqlConnection-Objekt erstellt, verwendet und entsorgt wird:

public void DALMethod()
  {
      SqlConnection connection = null;
      try
      {
          connection = new SqlConnection("XXXXXXXXXX");
          connection.Open();
          //implement the data access
      }
      catch (Exception exception)
      {
          //handle exception
      }
      finally
      {
          connection.Close();
          connection.Dispose();
      }
  }



Bei dem obigen Verfahren wird die dispose Methode explizit im finally-Block aufgerufen. Für den Fall einer Exception wird der catch-Block ausgeführt, und danach, im finally Block,das Objekt disposed. So wird die Verbindung im Speicher verbleiben, bis der finally-Block ausgeführt wird. Im .NET Framework ist es eine Richtlinie Ressourcen frei zu geben sobald sie nicht mehr gebraucht werden. Es gibt einen besseren Weg, den Aufruf der dispose Methode wie im folgenden Code gezeigt:


public void DALMethod()
  {
      using (SqlConnection connection = new SqlConnection("XXXXXXXXXX"))
      {
          connection.Open();
          //implement the data access
      }
  }


Wenn Sie den using Block wie Oben verwenden wird die dispose Methode aufgerufen sobald die Ausführung diesen Block verlässt. Dadurch wird sichergestellt, dass die SqlConnection Ressource so früh wie möglich frei gegeben wird. Sie sollten auch beachten, dass dies für Klassen gilt welche die IDisposable-Schnittstelle implementieren.

Kommentare sind geschlossen