Visual Basic .NET Language
डिस्पोजेबल वस्तुओं
खोज…
आईडीसोपोलेयर की मूल अवधारणा
किसी भी समय आप एक वर्ग को लागू करने वाली का दृष्टांत IDisposable
, आप कॉल करना चाहिए .Dispose
उस वर्ग पर 1 जब आप इसका उपयोग समाप्त कर दिया है। यह वर्ग को किसी भी प्रबंधित या अप्रबंधित निर्भरता को साफ करने की अनुमति देता है जिसका उपयोग वह कर सकता है। ऐसा नहीं करने से मेमोरी लीक हो सकती है।
Using
कीवर्ड सुनिश्चित है कि .Dispose
कहा जाता है, के बिना आप स्पष्ट रूप से यह कॉल करने के लिए हो रही है।
Using
किए बिना उदाहरण के लिए:
Dim sr As New StreamReader("C:\foo.txt")
Dim line = sr.ReadLine
sr.Dispose()
अब Using
साथ:
Using sr As New StreamReader("C:\foo.txt")
Dim line = sr.ReadLine
End Using '.Dispose is called here for you
एक प्रमुख लाभ Using
है जब एक अपवाद है, फेंक दिया जाता है, क्योंकि यह सुनिश्चित करता है .Dispose
कहा जाता है।
निम्नलिखित को धयान मे रखते हुए। यदि एक अपवाद को फेंक दिया जाता है, तो आपको कॉल करने के लिए याद रखने की आवश्यकता है। डिज़ाइन करें लेकिन आपको यह सुनिश्चित करने के लिए ऑब्जेक्ट की स्थिति की जांच करनी होगी कि आपको एक शून्य संदर्भ त्रुटि नहीं मिलती है, आदि।
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
एक ब्लॉक का उपयोग करने का मतलब है कि आपको ऐसा करने के लिए याद रखने की ज़रूरत नहीं है और आप 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 क्या मुझे हमेशा मेरे DbContext ऑब्जेक्ट पर Dispose () कॉल करना होगा? नहीं
एक का उपयोग करते हुए अधिक वस्तुओं की घोषणा
कभी-कभी, आपको एक पंक्ति में दो Disposable
ऑब्जेक्ट बनाने होंगे। ब्लॉक Using
घोंसले से बचने का एक आसान तरीका है।
यह कोड
Using File As New FileStream("MyFile", FileMode.Append)
Using Writer As New BinaryWriter(File)
'You code here
Writer.Writer("Hello")
End Using
End Using
इस एक में छोटा किया जा सकता है। मुख्य लाभ यह है कि आप एक इंडेंटेशन स्तर प्राप्त करते हैं:
Using File As New FileStream("MyFile", FileMode.Append), Writer As New BinaryWriter(File)
'You code here
Writer.Writer("Hello")
End Using