मैं लिखने के तरीकों के लिए एक स्ट्रीम भेज रहा हूं, और उन तरीकों से मैं एक बाइनरी रीडर/wrtier का उपयोग कर रहा हूँ। जब पाठक/लेखक का निपटारा हो जाता है, या तो using
या जब इसे संदर्भित नहीं किया जाता है, तो क्या स्ट्रीम भी बंद हो जाती है ??क्या धारावाहिक को स्ट्रीम करने से स्ट्रीम बंद हो जाता है?
मैं एक बाइनरी रीडर/राइटर भेजूंगा, लेकिन मैं स्ट्रीमरिएडर का भी उपयोग कर रहा हूं (शायद मुझे इसके आसपास जाना चाहिए। मैं केवल गेटलाइन और रीडलाइन के लिए इसका उपयोग कर रहा हूं)। जब भी कोई लेखक/पाठक बंद हो जाता है तो यह स्ट्रीम को बंद कर देता है, यह काफी परेशानी है।
ओह अच्छा, यह केवल तब होता है जब निपटान बुला, नहीं जब माना जाता है कि अंतिम रूप देने। – Nefzen
@ निफज़न: ऐसा इसलिए है क्योंकि इस बात की कोई गारंटी नहीं है कि आपकी ऑब्जेक्ट्स को किस क्रम में अंतिम रूप दिया जाएगा। यदि StreamReader और अंतर्निहित स्ट्रीम दोनों अंतिम रूप देने के लिए योग्य हैं, तो जीसी पहले स्ट्रीम को अंतिम रूप दे सकता है - फिर स्ट्रीम्रेडर के पास स्ट्रीम का संदर्भ नहीं होगा। इस कारण से, आप केवल अंतिम रूप से अप्रबंधित संसाधनों को रिलीज़ कर सकते हैं (उदाहरण के लिए, एक फ़ाइलस्ट्रीम इसके विंडोज़ फ़ाइल हैंडल को अंतिम रूप में बंद कर देता है)। ओह, और निश्चित रूप से, यदि आप कभी निपटान नहीं करते हैं, तो स्ट्रीम अभी भी एकत्र की जाएगी (और फ़ाइल बंद हो जाएगी)। धारा का निपटान न करने के लिए यह एक बहुत ही बुरी आदत है। – JMarsch
यह घोंसला VS कोड विश्लेषक को शिकायत करने का कारण बनता है: 'CA2202: Microsoft.Usage: ऑब्जेक्ट 'स्ट्रीम' विधि '...' में एक से अधिक बार निपटान किया जा सकता है। एक सिस्टम उत्पन्न करने से बचने के लिए। ऑब्जेक्ट डिस्प्ले अपवाद जिसे आप कॉल नहीं करना चाहिए किसी ऑब्जेक्ट पर एक से अधिक बार निपटाना। 'क्या इसे सिर्फ अनदेखा किया जाना चाहिए? मुझे अब तक कोई अपवाद नहीं मिला है ... –