यह बदलता रहता है, Stream
डिफ़ॉल्ट रूप से इस तरह के FileStream
के रूप में कुछ अपवादों के साथ Dispose
विधि में Flush()
फोन नहीं करता है। इसका कारण यह है कि कुछ स्ट्रीम ऑब्जेक्ट्स को Flush
पर कॉल की आवश्यकता नहीं है क्योंकि वे बफर का उपयोग नहीं करते हैं। कुछ, जैसे MemoryStream
यह सुनिश्चित करने के लिए विधि को ओवरराइड करते हैं कि कोई कार्रवाई नहीं की जाती है (इसे नो-ऑप बनाते हैं)।
इसका मतलब है कि यदि आपके पास वहां अतिरिक्त कॉल नहीं है तो आपको यह जांचना चाहिए कि Stream
सबक्लास आप Dispose
विधि में कॉल लागू कर रहे हैं या नहीं, और यह आवश्यक है या नहीं।
भले ही, यह एक अच्छा विचार सिर्फ पठनीयता के लिए वैसे भी यह कॉल करने के लिए हो सकता है - कैसे कुछ लोगों को उनके बयान का उपयोग कर के अंत में Close()
कॉल करने के लिए इसी तरह की:
using (FileStream fS = new FileStream(params))
using (CryptoStream cS = new CryptoStream(params))
using (BinaryWriter bW = new BinaryWriter(params))
{
doStuff();
//from here it's just readability/assurance that things are properly flushed.
bW.Flush();
bW.Close();
cS.Flush();
cS.Close();
fS.Flush();
fS.Close();
}
पास कॉल का उपयोग का अंत? मुझे केवल इतना पता है कि यह धारा का निपटारा करता है, और मैं हर समय अंत में बंद मेथोड को कॉल करता हूं। –
यह आवश्यक नहीं है, निपटान हमेशा स्ट्रीम बंद कर देगा, और बंद करें स्ट्रीम को पहले फ्लश करेगा। – nos
@ फ़ेलिक्सकज़िलविक: अगर उपयोग करने का अंत बंद नहीं हो रहा था, तो आपके पास खुली धाराएं होंगी और वहां SQLConnections खोलेंगी ...: D –