मैं इस तरह कोड के बहुत सारे है:सी # CA2000: का उपयोग कर दायरे खोने से पहले वस्तुओं फेंक FileStream/XmlTextReader
FileStream fs = File.Open(@"C:\Temp\SNB-RSS.xml", FileMode.Open);
using (XmlTextReader reader = new XmlTextReader(fs))
{
/* Some other code */
}
यह मैं निम्नलिखित कोड विश्लेषण चेतावनी देता है:
CA2000 : Microsoft.Reliability : In method 'SF_Tester.Run()', object 'fs' is not disposed along all exception paths. Call System.IDisposable.Dispose on object 'fs' before all references to it are out of scope.
अगर मैं पालन सुझाव और मैंने फ़ाइल डाली। एक प्रयोग कथन में खोलें, मुझे यह मिलता है:
CA2202 : Microsoft.Usage : Object 'fs' can be disposed more than once in method 'SF_Tester.Run()'. To avoid generating a System.ObjectDisposedException you should not call Dispose more than one time on an object.: Lines: 39
मैं वीएस -2010 का उपयोग कर रहा हूं और मैं मदद नहीं कर सकता लेकिन लगता है कि मैं कुछ गलत कर रहा हूं लेकिन मुझे यह नहीं दिख रहा है। मैं क्या गलत कर रहा हूँ?
एफवाईआई, "नया एक्सएमएलटीक्स्ट रीडर" .NET 2.0 के बाद से हटा दिया गया है। इसके बजाय 'XmlReader.Create' का उपयोग करें, क्योंकि हंस आपको नीचे दिखाता है। –
जीपर्स ... मुझे नहीं पता था कि XmlTextReader को बहिष्कृत कर दिया गया था। यह अब बहुत अधिक समझ में आता है। धन्यवाद! –
'CA2202' का कारण यह है कि 'रीडर' या 'राइटर' का निपटान करने के लिए उपयोग किए जाने वाले 'फ़ाइलस्ट्रीम' का निपटान भी किया जाता है; इसका मतलब है कि 'लेखक' का निर्माण विफल रहता है, लेकिन यदि यह सफल होता है तो आपको 'fs' का निपटान करना होगा; जो ** testalino ** द्वारा [नीचे जवाब] [http://stackoverflow.com/a/3700444/562906) की ओर जाता है। – PJTraill