दिलचस्प पोस्ट
मैं एक फ़ाइल में लाइनों के क्रम को कैसे बदल सकता हूँ? एंड्रॉइड एप्लिकेशन पर स्क्रीन चमक नियंत्रण जोड़ना फ़ुलस्क्रीन मोड में एक वेबसाइट चलाएं मैं जीआईटी को विंडोज़ के तहत सीआर + एलएफ के बजाय एलएफ का उपयोग कैसे कर सकता हूं? डायनेमिक एसक्यूएल में डीडीएल / एससीएल स्टेटमेंट्स में बांड वैरिएबल का उपयोग क्यों नहीं किया जा सकता? MVC रेजर डायनामिक मॉडल, 'ऑब्जेक्ट' में 'प्रॉपर्टीनेम' के लिए परिभाषा नहीं है दिनांक स्वरूप डीडी / एमएम / याय में परिवर्तित करें CSS3 के साथ हेक्सागोनल पैटर्न दोहराते उत्पन्न करें ग्रैंड सेंट्रल डिस्पैच (जीसीडी) बनाम प्रदर्शनकर्ता – बेहतर स्पष्टीकरण की आवश्यकता है बूट-3 में केवल एसआर क्या है? टॉमकेट में संदर्भों के बीच सत्र डेटा साझा करना एंड्रॉइड – जब कोई गतिविधि में बनाए गए रजिस्टर रिसीवर रजिस्टर / अपंजीकृत करें? अभी भी सहानुभूति और भ्रम और अंदर / बाहर के बारे में उलझन में है jQuery: <input type = "file" /> से चयनित फ़ाइल नाम प्राप्त करें Ast.NodeVisitor का उपयोग करने का सरल उदाहरण?

क्या 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 को निपटाना आवश्यक है?

Solutions Collecting From Web of "क्या 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 बेस क्लास से छुटकारा मिलते हैं इससे पहले कि वे ऐसा करेंगे।