Recherche…


Concept de base d'IDisposable

Chaque fois que vous instanciez une classe qui implémente IDisposable , vous devez appeler .Dispose 1 sur cette classe lorsque vous avez fini de l'utiliser. Cela permet à la classe de nettoyer toutes les dépendances gérées ou non gérées qu'elle peut utiliser. Ne pas le faire pourrait provoquer une fuite de mémoire.

Le mot-clé Using s'assure que .Dispose est appelé, sans que vous ayez à l' appeler explicitement .

Par exemple sans Using :

Dim sr As New StreamReader("C:\foo.txt")
Dim line = sr.ReadLine
sr.Dispose()    

Maintenant avec l' Using :

Using sr As New StreamReader("C:\foo.txt")
    Dim line = sr.ReadLine
End Using '.Dispose is called here for you

L'un des principaux avantages de l' Using has est la levée d'une exception, car elle garantit que .Dispose est appelée.

Considérer ce qui suit. Si une exception est levée, vous devez vous rappeler d'appeler .Dispose mais vous devrez peut-être aussi vérifier l'état de l'objet pour vous assurer que vous n'obtenez pas d'erreur de référence nulle, etc.

    Dim sr As StreamReader = Nothing
    Try
        sr = New StreamReader("C:\foo.txt")
        Dim line = sr.ReadLine
    Catch ex As Exception
        'Handle the Exception
    Finally
        If sr IsNot Nothing Then sr.Dispose()
    End Try

Un bloc d'utilisation signifie que vous n'avez pas à vous en souvenir et que vous pouvez déclarer votre objet dans l' try :

    Try
        Using sr As New StreamReader("C:\foo.txt")
            Dim line = sr.ReadLine
        End Using
    Catch ex As Exception
        'sr is disposed at this point
    End Try

1 Dois-je toujours appeler Dispose () sur mes objets DbContext? Nan

Déclarer plus d'objets en un

Parfois, vous devez créer deux objets Disposable dans une rangée. Il existe un moyen simple d’éviter l’imbrication des blocs d’ Using .

Ce code

Using File As New FileStream("MyFile", FileMode.Append)
    Using Writer As New BinaryWriter(File)
        'You code here
        Writer.Writer("Hello")
    End Using
End Using

peut être raccourci dans celui-ci. Le principal avantage est que vous gagnez un niveau d'indentation:

Using File As New FileStream("MyFile", FileMode.Append), Writer As New BinaryWriter(File)
    'You code here
    Writer.Writer("Hello")
End Using


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow