Verwenden von Objekten, die Ressourcen kapseln
Aktualisiert: November 2007
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