आपके द्वारा हमेशा कॉल किया जाना चाहिए या नहीं, इस बारे में आपका प्रश्न Dispose
आमतौर पर एक गर्म बहस है। .NET समुदाय में सम्मानित व्यक्तियों के दिलचस्प परिप्रेक्ष्य के लिए इस ब्लॉग को देखें ।
व्यक्तिगत रूप से, मुझे लगता है कि जेफरी रिक्टर की स्थिति यह है कि कॉलिंग Dispose
अनिवार्य नहीं है, अविश्वसनीय रूप से कमजोर है। वह अपनी राय को सही ठहराने के लिए दो उदाहरण देता है।
पहले उदाहरण में वे कहते हैं कि Dispose
विंडोज फॉर्म्स पर नियंत्रण मुख्यधारा के परिदृश्य में थकाऊ और अनावश्यक है। हालांकि, वह यह उल्लेख करने में विफल रहता है कि Dispose
वास्तव में उन मुख्यधारा के परिदृश्यों में नियंत्रण कंटेनरों द्वारा स्वचालित रूप से कहा जाता है।
दूसरे उदाहरण में वे कहते हैं कि एक डेवलपर गलत तरीके से मान सकता है कि इस उदाहरण को IAsyncResult.WaitHandle
आक्रामक रूप से यह महसूस किए बिना निपटाया जाना चाहिए कि संपत्ति आलसी रूप से प्रतीक्षा प्रदर्शन को रोकती है जिसके परिणामस्वरूप अनावश्यक प्रदर्शन जुर्माना लगाया जाता है। लेकिन, इस उदाहरण के साथ समस्या यह है कि IAsyncResult
खुद IDisposable
वस्तुओं से निपटने के लिए Microsoft के अपने स्वयं के प्रकाशित दिशानिर्देशों का पालन नहीं करता है । यदि कोई वर्ग किसी प्रकार का संदर्भ रखता है IDisposable
तो कक्षा को ही लागू करना चाहिए IDisposable
। अगर IAsyncResult
उस नियम का पालन किया जाता है, तो इसका अपना Dispose
तरीका यह निर्णय ले सकता है कि उसके कौन से घटक सदस्यों को निपटाने की जरूरत है।
इसलिए जब तक किसी के पास अधिक सम्मोहक तर्क नहीं है, मैं "हमेशा कॉल डिस्पोज़" शिविर में रहने वाला हूं इस समझ के साथ कि कुछ फ्रिंज मामले होने वाले हैं जो ज्यादातर खराब डिजाइन विकल्पों में से उत्पन्न होते हैं।
using
निर्माण का उपयोग कर सकते हैं ।