Using-Anweisung (Visual Basic)Using Statement (Visual Basic)

Deklariert den Beginn einer Using blockieren und ruft optional die Systemressourcen, die steuert, der Block ab.Declares the beginning of a Using block and optionally acquires the system resources that the block controls.

SyntaxSyntax

Using { resourcelist | resourceexpression }  
    [ statements ]  
End Using  

TeileParts

BegriffTerm DefinitionDefinition
resourcelist Erforderlich, wenn Sie keinen angeben resourceexpression.Required if you do not supply resourceexpression. Liste der Systemressourcen für eine oder mehrere, das von diesem Using Steuerelemente, die durch Kommas getrennt zu blockieren.List of one or more system resources that this Using block controls, separated by commas.
resourceexpression Erforderlich, wenn Sie keinen angeben resourcelist.Required if you do not supply resourcelist. Reference-Variable oder einen Ausdruck verweist auf eine Systemressource, die von diesem gesteuert werden Using Block.Reference variable or expression referring to a system resource to be controlled by this Using block.
statements Dies ist optional.Optional. Block von Anweisungen, die die Using -Block ausgeführt.Block of statements that the Using block runs.
End Using Erforderlich.Required. Beendet die Definition der Using Block frei und verwirft alle Ressourcen, die es steuert.Terminates the definition of the Using block and disposes of all the resources that it controls.

Jede Ressource in der resourcelist Teil weist die folgende Syntax und Bestandteile:Each resource in the resourcelist part has the following syntax and parts:

resourcename As New resourcetype [ ( [ arglist ] ) ]

- oder - -or-

resourcename As resourcetype = resourceexpression

ResourceList Teilenresourcelist Parts

BegriffTerm DefinitionDefinition
resourcename Erforderlich.Required. Reference-Variable, die auf eine Systemressource verweist, die die Using Steuerelemente zu blockieren.Reference variable that refers to a system resource that the Using block controls.
New Erforderlich, wenn die Using -Anweisung ruft die Ressource ab.Required if the Using statement acquires the resource. Wenn Sie die Ressource bereits abgerufen haben, verwenden Sie die zweite Syntax Alternative.If you have already acquired the resource, use the second syntax alternative.
resourcetype Erforderlich.Required. Die Klasse der Ressource.The class of the resource. Implementieren Sie die Klasse muss die IDisposable Schnittstelle.The class must implement the IDisposable interface.
arglist Dies ist optional.Optional. Liste von Argumenten, die an den Konstruktor zum Erstellen einer Instanz von übergeben resourcetype.List of arguments you are passing to the constructor to create an instance of resourcetype. Finden Sie unter Parameterliste.See Parameter List.
resourceexpression Erforderlich.Required. Variable oder einen Ausdruck verweist auf eine Systemressource, erfüllen die Anforderungen der resourcetype.Variable or expression referring to a system resource satisfying the requirements of resourcetype. Wenn Sie die Alternative der zweite Syntax verwenden, müssen Sie die Ressource abrufen, bevor Sie übergeben der Steuerung an die Using Anweisung.If you use the second syntax alternative, you must acquire the resource before passing control to the Using statement.

HinweiseRemarks

Manchmal muss Ihr Code eine nicht verwaltete Ressource, z. B. ein Dateihandle, ein COM-Wrapper oder eine SQL-Verbindung.Sometimes your code requires an unmanaged resource, such as a file handle, a COM wrapper, or a SQL connection. Ein Using Block garantiert das Verwerfen von ein oder mehrere solcher Ressourcen aus, wenn Ihr Code mit diesen abgeschlossen ist.A Using block guarantees the disposal of one or more such resources when your code is finished with them. Dadurch werden sie von anderem Code zu verwenden.This makes them available for other code to use.

Verwaltete Ressourcen sind von durch den .NET Framework-Garbage Collector (GC) freigegeben, ohne dass zusätzliche Programmieren ihrerseits.Managed resources are disposed of by the .NET Framework garbage collector (GC) without any extra coding on your part. Sie müssen keine Using Block für die verwalteten Ressourcen.You do not need a Using block for managed resources. Allerdings können Sie weiterhin verwenden eine Using Block, um die Freigabe einer verwalteten Ressource anstatt abzuwarten, bis der Garbage Collector zu erzwingen.However, you can still use a Using block to force the disposal of a managed resource instead of waiting for the garbage collector.

Ein Using Block besteht aus drei Teilen: Abruf, Verwendung und Freigabe.A Using block has three parts: acquisition, usage, and disposal.

  • Übernahme bedeutet, dass eine Variable erstellen und initialisieren es auf die Systemressource verweist.Acquisition means creating a variable and initializing it to refer to the system resource. Die Using Anweisung kann eine oder mehrere Ressourcen abrufen, oder Sie genau eine Ressource vor dem Eingeben des Blocks abrufen können, und stellen sie die Using Anweisung.The Using statement can acquire one or more resources, or you can acquire exactly one resource before entering the block and supply it to the Using statement. Wenn Sie angeben, resourceexpression, Sie müssen die Ressource abrufen, bevor Sie übergeben der Steuerung an die Using Anweisung.If you supply resourceexpression, you must acquire the resource before passing control to the Using statement.

  • Nutzung bedeutet, dass Zugriff auf die Ressourcen und Aktionen mit der sie ausgeführt werden.Usage means accessing the resources and performing actions with them. Die Anweisungen zwischen Using und End Using die Nutzung von Ressourcen darstellen.The statements between Using and End Using represent the usage of the resources.

  • Beseitigung aufrufen bedeutet, dass die Dispose Methode für das Objekt in resourcename.Disposal means calling the Dispose method on the object in resourcename. Dadurch wird das Objekt seine Ressourcen sauber beendet.This allows the object to cleanly terminate its resources. Die End Using Anweisung löscht Ressourcen in der Using des TextBlock-Steuerelement.The End Using statement disposes of the resources under the Using block's control.

VerhaltenBehavior

Ein Using Block verhält sich wie ein Try... Finally Konstruktion, in dem die Try Block verwendet die Ressourcen und die Finally Block freigegeben werden.A Using block behaves like a Try...Finally construction in which the Try block uses the resources and the Finally block disposes of them. Aus diesem Grund die Using Block gewährleistet die Freigabe von Ressourcen, unabhängig davon, wie Sie den Block zu beenden.Because of this, the Using block guarantees disposal of the resources, no matter how you exit the block. Dies gilt auch bei einem Ausnahmefehler, mit Ausnahme von einer StackOverflowException.This is true even in the case of an unhandled exception, except for a StackOverflowException.

Den Rahmen jeder Ressourcenvariablen durch die Using Anweisung ist auf die Using Block.The scope of every resource variable acquired by the Using statement is limited to the Using block.

Bei Angabe von mehr als eine Systemressource, die in der Using -Anweisung, die Auswirkung ist identisch, als ob Sie verschachtelte Using eine innerhalb einer anderen werden blockiert.If you specify more than one system resource in the Using statement, the effect is the same as if you nested Using blocks one within another.

Wenn resourcename ist Nothing, kein Aufruf von Dispose vorgenommen wird, und es wird keine Ausnahme ausgelöst.If resourcename is Nothing, no call to Dispose is made, and no exception is thrown.

Strukturierte Ausnahmebehandlung innerhalb eines Blocks verwendenStructured Exception Handling Within a Using Block

Wenn Sie eine Ausnahme zu behandeln, die in auftreten müssen die Using blockieren, können Sie eine vollständige hinzufügen Try... Finally -Konstruktion hinzufügen.If you need to handle an exception that might occur within the Using block, you can add a complete Try...Finally construction to it. Wenn Sie den Fall behandeln müssen, in denen die Using Anweisung ist nicht erfolgreich eine Ressource abgerufen, können Sie testen, finden Sie unter resourcename ist Nothing.If you need to handle the case where the Using statement is not successful in acquiring a resource, you can test to see if resourcename is Nothing.

Strukturierte Ausnahmebehandlung anstelle eines Blocks verwendenStructured Exception Handling Instead of a Using Block

Wenn Sie eine präzisere Kontrolle über den Erwerb von Ressourcen, oder Sie zusätzlichen Code in benötigen der Finally Block kann neu geschrieben werden die Using -Blocks als eine Try... Finally Konstruktion.If you need finer control over the acquisition of the resources, or you need additional code in the Finally block, you can rewrite the Using block as a Try...Finally construction. Das folgende Beispiel zeigt Gerüst Try und Using Konstruktionen, die in den Erwerb und die Freigabe entsprechen resource.The following example shows skeleton Try and Using constructions that are equivalent in the acquisition and disposal of resource.

Using resource As New resourceType   
    ' Insert code to work with resource.  
End Using  
  
' For the acquisition and disposal of resource, the following  
' Try construction is equivalent to the Using block.  
Dim resource As New resourceType  
Try   
    ' Insert code to work with resource.  
Finally   
    If resource IsNot Nothing Then  
        resource.Dispose()   
    End If  
End Try   

Hinweis

Der Code in die Using Block sollten nicht das Objekt im zuweisen resourcename einer anderen Variablen.The code inside the Using block should not assign the object in resourcename to another variable. Wenn Sie beenden die Using blockieren, die Ressource freigegeben wird, und die andere Variable kann nicht auf die Ressource, die auf den er zeigt zugreifen.When you exit the Using block, the resource is disposed, and the other variable cannot access the resource to which it points.

BeispielExample

Das folgende Beispiel erstellt eine Datei mit dem Namen "log.txt" und zwei Textzeilen in die Datei schreibt.The following example creates a file that is named log.txt and writes two lines of text to the file. Im Beispiel wird auch der gleichen Datei liest und die Zeilen des Texts angezeigt.The example also reads that same file and displays the lines of text.

Da die TextWriter und TextReader -Klassen implementieren die IDisposable -Schnittstelle, die den Code verwenden kann Using Anweisungen, um sicherzustellen, dass die Datei korrekt wird, nach dem Schreiben geschlossen und Lesevorgänge.Because the TextWriter and TextReader classes implement the IDisposable interface, the code can use Using statements to ensure that the file is correctly closed after the write and read operations.

Private Sub WriteFile()
    Using writer As System.IO.TextWriter = System.IO.File.CreateText("log.txt")
        writer.WriteLine("This is line one.")
        writer.WriteLine("This is line two.")
    End Using
End Sub

Private Sub ReadFile()
    Using reader As System.IO.TextReader = System.IO.File.OpenText("log.txt")
        Dim line As String

        line = reader.ReadLine()
        Do Until line Is Nothing
            Console.WriteLine(line)
            line = reader.ReadLine()
        Loop
    End Using
End Sub

Siehe auchSee also