@ Fooberichu के जवाब स्थान पर है, लेकिन मुझे लगता है कि यह भी है कि उनका कहना है लायक है आम तौर पर केवल कुछ चीजें "ज़रूरत" को स्पष्ट रूप से निपटाया जा सकता है।
वस्तुओं हमेशा प्रभावी ढंग से पर निपटारा कर रहे हैं कुछ बिंदु:
- किसी भी समय जीसी एक संग्रह करता है, यह होगा (अंततः) वस्तुओं नहीं रह गया है संदर्भित कर रहे हैं कि के निपटान के। इसलिए यदि आप मैन्युअल रूप से निपटान नहीं करते हैं, तो वस्तु को अभी भी दायरे से बाहर होने के कुछ सेकंड के भीतर निपटान किया जा सकता है।
- जब आपका आवेदन छोड़ता है, तो इसे आयोजित किए गए सभी संसाधन जारी किए जाते हैं। (हालांकि वस्तुओं को सी #/नेट द्वारा निपटाया नहीं जा सकता है, ओएस आपके प्रक्रिया को पकड़ने के लिए बहुत कुछ वापस दावा करेगा।संसाधन के जीवनकाल आपके आवेदन से परे फैली हुई है, तो ओएस आमतौर पर (मैन्युअल रूप से निपटाने की यह सफाई)
बिंदु या रोजगार के लिए जिम्मेदार है एक 'का उपयोग') है इसलिए सुनिश्चित करने के लिए नहीं है कि संसाधनों जारी किया जाएगा, लेकिन उन्हें जितनी जल्दी हो सके जारी करें।
इन दिनों आप अधिकांश प्रकार के संसाधनों (जैसे स्मृति, फ़ाइल हैंडल, या सिस्टम ब्रश) से बाहर निकलने की संभावना नहीं है। हालांकि, अगर आपको संसाधनों को पूरा करने की आवश्यकता नहीं होती है, तो आपका प्रोग्राम कम कुशल होने की संभावना है, तो आप आवश्यकतानुसार अधिक मेमोरी का उपयोग कर सकते हैं, या शायद अस्थायी रूप से उपयोगी अनुप्रयोगों से अन्य अनुप्रयोगों को अवरुद्ध करके देरी कर सकते हैं। सामान्य, तो, निपटान अच्छा शिष्टाचार, स्वच्छता और अनावश्यक अक्षमता काटने के बारे में है।
ऐसे कुछ मामले हैं जहां संसाधन जारी किए जाने चाहिए (उदाहरण के लिए यदि आप फ़ाइल बंद नहीं करते हैं, तो आप इसे अपने प्रोग्राम या अन्य प्रोग्राम्स में कहीं और से नहीं खोल/स्थानांतरित/हटा सकते हैं; यदि आप उन्हें जारी किए बिना अपने ग्राफिक्स कार्ड पर बनावट को आवंटित रखें, आप वीआरएएम से बाहर हो जाएंगे और कंप्यूटर का प्रदर्शन असफल हो जाएगा), लेकिन सामान्य रूप से, आप इन परिस्थितियों को कभी-कभी सामना करेंगे, और यदि आप सर्वोत्तम प्रथाओं का पालन करते हैं (स्पष्ट रूप से ऑब्जेक्ट्स को डिस्पोजेक्ट करते समय ' अब और आवश्यकता नहीं है), आपको आमतौर पर यह जानने की आवश्यकता नहीं होगी कि ये स्थितियां कब होती हैं क्योंकि आप पहले से ही उनके साथ सही तरीके से व्यवहार कर रहे हैं।
स्रोत
2011-11-22 22:06:10
समस्या यह है कि मैं इस स्थिति में ऑब्जेक्ट जीवन को पूरी तरह से समझ नहीं पा रहा हूं। अगर मैं (प्रोसेस। स्टार्ट (यूआरएल)) का उपयोग कर रहा हूं; तो क्या वह उस बिंदु पर इंतजार करेगा? या यह प्रक्रिया को जल्दी से निपटान करेगा? फिलहाल, इससे व्यवहार में कोई फर्क नहीं पड़ता है, इसलिए मैं _guess_ कि कोई संसाधन नहीं है जो खुले रखा जाता है, लेकिन मुझे यकीन नहीं है और मुझे नहीं पता कि इसे कैसे मापें। –
चूंकि "उपयोग" खंड स्पष्ट रूप से कंपाइलर को एक कोशिश/आखिरकार बनाने और एक निपटान को लागू करने के लिए निर्देश देता है और तथ्य यह है कि वे एक आईडीस्पोज़ेबल ऑब्जेक्ट लौट रहे हैं, मुझे लगता है कि आप ऐसा करने के लिए सुरक्षित होंगे। इसे रद्द नहीं करके आप संसाधनों को बांध सकते हैं। आप एक लूप बनाने का प्रयास कर सकते हैं जो उन्हें बिना किसी डिस्पोजेक्ट के कई यूआरएल खोलता है और देखता है कि क्या आपके संसाधन नियंत्रण से बाहर हैं और क्लॉज का उपयोग करके उन्हें लपेटकर एक और परीक्षण है। चेतावनी है कि उसके बाद बंद करने के लिए आपके पास खिड़कियों का एक गुच्छा होगा। :) – Fooberichu