2012-09-26 17 views
5

मैंने कुछ COM लाइब्रेरी में विजुअल स्टूडियो प्रोजेक्ट में एक संदर्भ जोड़ा। अब जब मैं किसी विधि में बना और ऑब्जेक्ट करता हूं, तो क्या यह COM ऑब्जेक्ट स्वचालित रूप से रिलीज़ होगा जब प्रोग्राम उस विधि को छोड़ देता है? या मुझे हमेशा इन वस्तुओं को मैन्युअल रूप से जारी करना चाहिए? (रिलीजकॉम ऑब्जेक्ट या फाइनल रिलीज कॉम ऑब्जेक्ट?)।COM ऑब्जेक्ट्स को जारी करना

+1

इस के बारे में अधिक है (http://stackoverflow.com/questions/1827059/why-use-finalreleasecomobject-instead-of-releasecomobject) – StuartLC

+1

जांच करने के लिए कुछ समय बचाएं, और धैर्य रखें क्योंकि लेख सभी कठिन और उबाऊ हैं, जैसे http: // blogs.msdn.com/b/visualstudio/archive/2010/03/01/marshal-releasecomobject-considered-dangerous.aspx –

उत्तर

3

यह निश्चित रूप से स्वचालित रूप से नहीं किया है, और कुछ मामलों में यह as described in this blog post (Marshal.ReleaseComObject फोन करके) ऐसा करने के लिए खतरनाक हो सकता है।

इन-प्रो COM ऑब्जेक्ट्स के लिए, अक्सर COM ऑब्जेक्ट्स को रिलीज़ करने की आवश्यकता नहीं होती है।

आउट-प्रो COM ऑब्जेक्ट्स के लिए, Office apps failing to shut down after automation from a .NET client जैसी समस्याओं को रोकने के लिए उन्हें जारी करना महत्वपूर्ण हो सकता है।

इस मामले में, मैं ऊपर लिंक ब्लॉग पोस्ट में सलाह का पालन करें:

आप एक दायरे वाला, एकल पिरोया ढंग से एक COM वस्तु का उपयोग कर रहे हैं तो आप सुरक्षित रूप से उस पर ReleaseComObject कॉल कर सकते हैं ऑब्जेक्ट जब आप इसके साथ कर रहे हैं।

लेकिन [यहां] अगर आप अपने आवेदन में कई स्थानों या एक से अधिक थ्रेड से एक COM वस्तु का उपयोग कर रहे हैं (या एक ही प्रक्रिया में अन्य अनुप्रयोगों से), तो आपको नहीं बुलाना चाहिए ReleaseComObject

संबंधित मुद्दे