Freigeben über


Verwenden von Objekten, die Ressourcen kapseln

Wenn Sie Code verfassen, in dem ein eine Ressource kapselndes Objekt verwendet wird, sollten Sie den Aufruf der Dispose-Methode des Objekts sicherstellen, wenn das Objekt nicht mehr verwendet wird. Verwenden Sie dafür die using-Anweisung in C#, oder implementieren Sie in anderen für die Common Language Runtime entwickelten Sprachen einen Try-/Finally-Block.

Using-Anweisung in C#

Die using-Anweisung in der Programmiersprache C# trägt zur Automatisierung des Aufrufs der Dispose-Methode bei, indem der zum Erstellen und Bereinigen eines Objekts zu verfassende Code vereinfacht wird. Die using-Anweisung ruft eine oder mehrere Ressourcen ab, führt die von Ihnen angegeben Anweisungen aus und gibt dann das Objekt frei. Beachten Sie, dass sich die using-Anweisung nur bei Objekten anbietet, deren Lebensdauer nicht die der Methode überschreitet, mit der die Objekte erstellt werden. Im folgenden Codebeispiel wird eine Instanz der ResourceWrapper-Klasse erstellt und bereinigt, wie im C#-Beispiel unter Implementieren einer Dispose-Methode dargestellt.

class myApp
{
   public static void Main()
   {
      using (ResourceWrapper r1 = new ResourceWrapper())
      {
         // Do something with the object.
         r1.DoSomething();
      }
   }
}

Der vorhergehende Code, in den die using-Anweisung einbezogen ist, entspricht dem folgenden Code.

class myApp
{
   public static void Main()
   {
      ResourceWrapper r1 = new ResourceWrapper();
      try
      {
         // Do something with the object.
         r1.DoSomething();
      }
      finally
      {
         // Check for a null resource.
         if (r1 != null)
         // Call the object's Dispose method.
         r1.Dispose();
      }
   }
}

Mit der using-Anweisung in C# können Sie mehrere Ressourcen durch eine einzige Anweisung abrufen. Dies entspricht in interner Hinsicht geschachtelten using-Anweisungen. Weitere Informationen sowie ein Codebeispiel finden Sie unter using-Anweisung (C#-Referenz).

Try-/Finally-Block

Wenn Sie verwalteten Code, in dem ein eine Ressource kapselndes Objekt verwendet wird, nicht in C# verfassen, stellen Sie mit einem Try-/Finally-Block sicher, dass die Dispose-Methode des Objekts aufgerufen wird. Im folgenden Codebeispiel wird eine Instanz der Resource-Klasse erstellt und bereinigt, wie im Visual Basic-Beispiel unter Implementieren einer Dispose-Methode dargestellt.

class myApp
   Public Shared Sub Main()
      Resource r1 = new Resource()
      Try
         ' Do something with the object.
         r1.DoSomething()
      Finally
         ' Check for a null resource.
         If Not (r1 is Nothing) Then
            ' Call the object's Dispose method.
            r1.Dispose()
         End If
      End Try
   End Sub
End Class

Siehe auch

Referenz

using-Anweisung (C#-Referenz)

Weitere Ressourcen

Bereinigen von nicht verwalteten Ressourcen