अभी हाल तक, मैं मानना था कि .NET रनटाइम केवल 1 से COM ऑब्जेक्ट के संदर्भ गिनती बढ़ जाती है जब एक runtime-callable wrapper बनाने, और कहा कि केवल एक ही तरह के क्रम-प्रतिदेय आवरण किसी भी COM ऑब्जेक्ट के लिए बनाया जाता है।.NET रनटाइम COM COM ऑब्जेक्ट्स के लिए संदर्भ गणना> 1 कब रखता है?
यदि मुझे गलत नहीं है, तो उपर्युक्त का तात्पर्य है कि Marshal.FinalReleaseComObject और Marshal.ReleaseComObject अभ्यास में वही काम करते हैं।
हालांकि, आज मैं यह सत्यापित करने के लिए कुछ परीक्षण लिख रहा था कि COM ऑब्जेक्ट्स को मेरे कोड द्वारा ठीक से जारी किया गया है। मैं अनुमानित रूप से जारी ऑब्जेक्ट का आह्वान करके और अपेक्षित InvalidComObjectException
की जांच करके ऐसा करता हूं। यह पता चला है कि ऐसे मामले हैं जहां FinalReleaseComObject
के बाद अपवाद फेंक दिया गया है, लेकिन ReleaseComObject
के बाद नहीं।
इसका मतलब यह है कि .NET 2.0 क्रम एक COM ऑब्जेक्ट के लिए एक से अधिक संदर्भ पकड़ कर सकते हैं? यदि हां, तो यह कब करता है?