Using Deyimi (Visual Basic)

Bir bloğun başlangıcını Using bildirer ve isteğe bağlı olarak bloğun denetimde olduğu sistem kaynaklarını elde eder.

Syntax

Using { resourcelist | resourceexpression }
    [ statements ]
End Using

Bölümler

Süre Tanım
resourcelist yoksa resourceexpression gereklidir. Bu blok tarafından kontrol eden ve virgülle ayrılmış Using bir veya daha fazla sistem kaynağı listesi.
resourceexpression yoksa resourcelist gereklidir. Bu blok tarafından denetlenen bir sistem kaynağına başvuran başvuru değişkeni veya Using ifadesi.
statements İsteğe bağlı. Bloğun çalıştırmış olduğu Using deyim bloğu.
End Using Gereklidir. Bloğun tanımını Using sonlandırılır ve denetimi yapılan tüm kaynakları atlar.

Parçanın her kaynağı resourcelist aşağıdaki söz dizimlerine ve bölümlerine sahip:

resourcename As New resourcetype [ ( [ arglist ] ) ]

-veya-

resourcename As resourcetype = resourceexpression

resourcelist Bölümleri

Süre Tanım
resourcename Gereklidir. Bloğun denetimine sahip bir sistem kaynağına başvuran Using başvuru değişkeni.
New deyimi kaynağı Using aldı ise gereklidir. Kaynağı zaten edindiyebilirsiniz, ikinci söz dizimi alternatifi kullanın.
resourcetype Gereklidir. Kaynağın sınıfı. sınıfı arabirimini IDisposable uygulamalı.
arglist İsteğe bağlı. bir örneği oluşturmak için oluşturucuya aktartığınız bağımsız değişkenlerin resourcetype listesi. Bkz. Parametre Listesi.
resourceexpression Gereklidir. Gereksinimlerini karşılayan bir sistem kaynağına başvuran değişken veya resourcetype ifade. İkinci söz dizimi alternatifi kullanırsanız, denetimi deyimine geçirmeden önce kaynağı edinmeniz Using gerekir.

Açıklamalar

Bazen kodunuz için dosya tanıtıcısı, COM sarmalayıcı veya ağ bağlantısı gibi SQL gerekir. Blok, Using kodunuz tamamlandığında bu tür bir veya daha fazla kaynağın atılması garantisini sağlar. Bu, bunları diğer kodlar için kullanılabilir yapar.

Yönetilen kaynaklar, sizin tarafınıza ek kodlama .NET Framework atık toplayıcı (GC) tarafından atılması. Yönetilen kaynaklar için Using blok gerekli değildir. Ancak, atık toplayıcıyı beklemek yerine yönetilen kaynağın atılması için yine Using de bir blok kullanabilirsiniz.

Bir Using bloğun üç parçası vardır: edinme, kullanım ve atma.

  • Edinme, bir değişken oluşturmak ve bunu sistem kaynağına başvurmak için başlatma anlamına gelir. deyimi bir veya daha fazla kaynak edinebilirsiniz ya da bloğu girmeden ve deyimine girmeden Using önce tam olarak bir kaynak Using edinebilirsiniz. resourceexpressionsağlarsanız, denetimi deyimine geçirmeden önce kaynağı edinmelisiniz. Using

  • Kullanım, kaynaklara erişme ve bu kaynaklarla eylemler gerçekleştirme anlamına gelir. ve arasındaki Using End Using deyimler kaynakların kullanımını temsil ediyor.

  • Atma, içinde Dispose nesnesinde yöntemini çağırma anlamına resourcename gelir. Bu, nesnenin kaynaklarını temiz bir şekilde sonlandırmasını sağlar. End Usingdeyimi, kaynakları bloğun denetimi Using altına atıyor.

Davranış

Blok, bloğun kaynakları kullandığı ve bloğun bunları atarak kullandığı Using Try ... yapısı gibi Finally Try Finally davranır. Bu nedenle blok, Using bloktan nasıl çıkarsınız fark etmez kaynakların atılması garantisini sağlar. Bu durum, bir dışında işlanmamış bir özel durum durumunda bile geçerli StackOverflowException olur.

deyimi tarafından alınan her kaynak değişkeninin Using kapsamı, blokla Using sınırlıdır.

deyiminde birden fazla sistem kaynağı belirtirsiniz, etki, bir kaynağı başka bir sistem içinde Using iç içe geçmiş olarak Using yerleştirmeniz ile aynıdır.

ise, resourcename çağrısı yapılır ve hiçbir özel durum Nothing Dispose olmaz.

Using Bloğu içinde Yapılandırılmış Özel Durum İşleme

Blok içinde meydana gelen bir özel durumu işlemeye ihtiyacınız varsa, buna eksiksiz bir Using ... yapısı Try Finally eklemelisiniz. deyiminin kaynak elde etmek için başarılı olmadığınız bir durumu işlemeye ihtiyacınız varsa olup olmadığını Using test etmek için test resourcename Nothing edin.

Using Bloğu Yerine Yapılandırılmış Özel Durum İşleme

Kaynakların alınması üzerinde daha iyi denetime ihtiyacınız varsa veya blokta ek koda ihtiyacınız varsa, bloğu ... yapısı Finally Using olarak yeniden Try Finally yazabilirsiniz. Aşağıdaki örnek, edinme ve atma ile eşdeğer olan Try Using iskelet ve yapıları resource gösterir.

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

Not

Bloğun içindeki Using kod, içindeki nesnesini başka bir resourcename değişkene atamamalı. Bloktan Using çıkışta kaynak atılıyor ve diğer değişken, kaynak tarafından bu kaynağa erişilemayacak.

Örnek

Aşağıdaki örnek, log.txt adlı bir dosya oluşturur ve dosyaya iki satırlık metin yazar. Örnek aynı dosyayı da okur ve metin satırlarını görüntüler:

ve TextWriter sınıfları arabirimini uygulayan kod, yazma ve okuma işlemleri sonrasında dosyanın doğru şekilde kapatıla olduğundan emin olmak TextReader IDisposable için Using deyimlerini kullanabilir.

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

Ayrıca bkz.