दिलचस्प पोस्ट
वस्तु का संदर्भ वस्तु की आवृत्ति अनुसार सेट नहीं. है। NSDateFormatter लोकेल "फीचुर" से निपटने का सबसे अच्छा तरीका क्या है? एंड्रॉइड ग्रेडल प्लगइन 0.7.3 का उपयोग करके प्रोजेक्ट में प्री-बिल्ट .so फाइलें जोड़ें एंड्रॉइड ऐप फ़ॉरबेज अधिसूचना प्राप्त नहीं कर रहा है जब ऐप्प को बहु-कार्य ट्रे से रोक दिया जाता है ऐंचैर्टगेंइन – एक्स अक्ष के रूप में तारीखों का उपयोग कैसे कर सकता है – मैं जो फ़ाइल सहेज रहा हूं वह खाली है I एएसपी.नेट एमवीसी में टेम्पटडाटा बनाम सत्र का उपयोग कब किया जाए Iframes 'बुरा अभ्यास' माना जाता है? एंड्रॉइड: अलार्म मैनेजर का उपयोग करते हुए एक पृष्ठभूमि कार्य चल रहा है MenuItemCompat.getActionView हमेशा रिक्त देता है फेसबुक पर एंड्रॉइड शेयर आशय के माध्यम से कैप्शन के साथ फोटो कैसे साझा करें? सी और सी ++ के संदर्भ में स्थिर, ऑटो, वैश्विक और स्थानीय चर के बीच अंतर मैं अपने नेविगेशन पट्टी में एक सूची वस्तु का संपूर्ण क्षेत्र कैसे बना सकता हूं, क्लिक करने योग्य एक लिंक के रूप में? मैं आरक्षित शब्दों से किस प्रकार से बचता हूं जो स्तंभ नामों के रूप में इस्तेमाल होता है? MySQL / तालिका बनाएं मॉन्देड में नेस्टेड एरेज़ को अपडेट करना स्प्रेडशीट से Google कैलेंडर ईवेंट बनाएं लेकिन डुप्लिकेट को रोकें

क्या SqlCommand.Dispose () यदि आवश्यक SqlConnection का निपटारा किया जाएगा?

मैं आमतौर पर इस तरह कोड का उपयोग करें:

using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString)) { var command = connection.CreateCommand(); command.CommandText = "..."; connection.Open(); command.ExecuteNonQuery(); } 

क्या मेरा command स्वचालित रूप से निपटारा होगा? या नहीं और मुझे इसे ब्लॉक using करने में लपेट करना है? क्या SqlCommand को निपटाना आवश्यक है?

वेब के समाधान से एकत्रित समाधान "क्या SqlCommand.Dispose () यदि आवश्यक SqlConnection का निपटारा किया जाएगा?"

बस ऐसा करें:

 using(var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString)) using(var command = connection.CreateCommand()) { command.CommandText = "..."; connection.Open(); command.ExecuteNonQuery(); } 

कमान पर कॉलिंग नहीं बुलाएगा कुछ बहुत बुरा नहीं होगा हालांकि इसे निस्तारण करना अंतिम रूप से कॉल करने के लिए कॉल को दबाएगा , जिससे निष्पादन वृद्धि को निपटाने के लिए फोन किया जाएगा।

सबसे सुरक्षित नीति हमेशा ऑब्जेक्ट पर Dispose() को कॉल करना है, अगर यह स्पष्ट रूप से या एक ब्लॉक के माध्यम से IDisposable लागू करता है ऐसे मामले हो सकते हैं जहां यह आवश्यक नहीं है लेकिन इसे बुलाकर किसी भी समस्या का कारण नहीं होना चाहिए (यदि क्लास सही लिखा गया है)। इसके अलावा, आपको कभी नहीं पता होगा कि जब कोई कार्यान्वयन इसका अर्थ बदल सकता है, जहां पहले कॉल की आवश्यकता नहीं थी, तो यह निश्चित रूप से आवश्यक है।

आपके द्वारा दिए गए उदाहरण में, आप कमांड के लिए ब्लॉक का उपयोग करके एक अतिरिक्त आंतरिक जोड़ सकते हैं, साथ ही कनेक्शन के लिए बाहरी उपयोग ब्लॉक को बनाए रख सकते हैं।

हाँ, आपको चाहिए, भले ही यह कार्यान्वयन वर्तमान में बहुत कुछ नहीं कर रहा है, आपको नहीं पता कि भविष्य में कैसे बदलाव किया जा रहा है (उदाहरण के लिए नए रूपरेखा संस्करण) सामान्य तौर पर, आपको उन सभी वस्तुओं का निपटान करना चाहिए जो सुरक्षित पक्ष पर IDisposable को लागू करते हैं।

हालांकि, अगर ऑपरेशन स्थगित हो जाता है और आप पूर्ण दायरे को नियंत्रित नहीं करते हैं (उदाहरण के लिए जब CloseConnection से CloseConnection करना या एक SqlDataReader या फिर लौटते समय), तो आप CloseConnection लिए CommandBehavior सेट कर सकते हैं ताकि रीडर के रूप में जल्द ही किया जा सके कनेक्शन आपके लिए ठीक से बंद / निपटारा है

आप परावर्तक का उपयोग कर इस प्रकार की सामग्री को खोज सकते हैं

मेरे पास एक छोटा खतरा था (मैं सुझाव दे सकता हूं कि आप खुद को खोदते हैं हालांकि यह पूरी तरह से पूरा यकीन है, हालांकि जैसा कि मैंने कोशिश नहीं की थी) और ऐसा लगता है कि जब आप एक कनेक्शन को मारते हैं, तो बच्चों से जुड़े कोई भी निपटान नहीं होता है उस कनेक्शन के साथ इसके अलावा यह वास्तव में एक आदेश के निपटान की तरह वास्तव में नहीं दिखता है वास्तव में बहुत कुछ करता है यह एक फ़ील्ड को रिक्त करने के लिए सेट करेगी, खुद को कंटेनर से अलग करें (यह एक प्रबंधित मेमोरी रिसाव को रोक सकता है) और एक ईवेंट बढ़ा सकता है (यह महत्वपूर्ण हो सकता है लेकिन मुझे नहीं पता कि इस घटना को कौन सुन रहा है)।

किसी भी तरह से इस सामग्री का प्रयोग ब्लॉक में उपयोग करने के लिए अच्छा अभ्यास है या यह सुनिश्चित करने के लिए कि आप उस ऑब्जेक्ट में एक विच्छेदन पैटर्न का उपयोग करके इसका निपटान करना चाहते हैं (यदि आप कुछ समय के लिए आदेश पर पकड़ रखना चाहते हैं)

व्यवहार में, आप Dispose को छोड़ सकते हैं। यह किसी भी संसाधनों को मुक्त नहीं करता है। यह अंतिम रूप से दबदबा भी नहीं करता है क्योंकि निर्माता ऐसा करता है।

सिद्धांत रूप में, माइक्रोसॉफ्ट एक अप्रबंधित संसाधन को पकड़ने के लिए कार्यान्वयन को बदल सकता है, लेकिन मुझे उम्मीद है कि वे एक एपीआई से बाहर निकलते हैं जो Component बेस क्लास से छुटकारा मिलते हैं इससे पहले कि वे ऐसा करेंगे।