मैं इन दो देशी Win32 कार्यों के साथ चारों ओर खेल रहा हूँ के साथ Marshal.ReleaseComObject उपयोग कैसे करें:Win32 देशी कार्यों
[DllImport("oleacc.dll")]
public static extern int AccessibleObjectFromWindow(
IntPtr hwnd,
int dwObjectID,
ref Guid refID,
ref Accessibility.IAccessible ppvObject);
[DllImport("oleacc.dll")]
public static extern uint AccessibleChildren(
Accessibility.IAccessible paccContainer,
int iChildStart,
int cChildren,
[Out] object[] rgvarChildren,
out int pcObtained);
और मैं एक मुश्किल समय पता लगाना अगर मैं ऐसा करना चाहिए/मार्शल कॉल करने के लिए की जरूरत हो रही है किसी भी लौटे ऑब्जेक्ट्स पर ReleaseComObject। मैं आभारी हूं कि कोई इस विषय पर मुझे प्रबुद्ध कर सकता है! यहां एक नमूना उपयोग करें: यदि आप वास्तव में के बजाय जीसी को चलाने के लिए इंतजार कर के, तुरंत रिहाई लागू करने के लिए जीसी प्राप्त करने की आवश्यकता
Accessibility.IAccessible test(
int hWnd,
string accessName)
{
Guid guidCOM = new Guid(0x618736E0, 0x3C3D, 0x11CF, 0x81, 0xC, 0x0, 0xAA, 0x0, 0x38, 0x9B, 0x71);
Accessibility.IAccessible a = null;
AccessibleObjectFromWindow(
new IntPtr(hWnd),
-4,
ref guidCOM,
ref a);
object[] children = new object[a.accChildCount];
int z;
AccessibleChildren(a, 0, children.Length, children, out z);
foreach (Accessibility.IAccessible a2 in children)
try
{
if (a2.get_accName(0) == accessName)
return a2;
}
catch
{
}
return null;
}
"सबसे अच्छा उपयोग करने के लिए नहीं यह" है * बहुत विशिष्ट * संदर्भ के लिए। उदाहरण के लिए Outlook एड-इन से निपटने पर, * बस सब कुछ मैन्युअल रूप से जारी किया जाना चाहिए *। ऐसा नहीं करने से कुछ वास्तव में अजीब त्रुटियां होती हैं ("ओवर-रिलीज़िंग" वही करता है, इसलिए बहुत सटीक स्वामित्व अर्थशास्त्र को कोड में काम करने की आवश्यकता होती है)। देखें [.NET में विकसित Office एड-इन्स में COM ऑब्जेक्ट्स को कब रिलीज़ करें] (http://www.add-in-express.com/creating-addins-blog/2008/10/30/releasing-office-objects- शुद्ध /)। –
... दूसरी तरफ [मार्शल.रलीज कॉम ऑब्जेक्ट कन्फेयरिंग डेंजरस] (http://blogs.msdn.com/b/visualstudio/archive/2010/03/01/marshal-releasecomobject-cononsidered-dangerous.aspx)। यह सब के बारे में सिर्फ क्रमी है। –
दरअसल, पीएसटी, वीएस टीम की लंबी हवा वाली कहानी मुझे एक विशेष मामला होने के लिए प्रतीत होती है। इस कहानी के संदर्भ में इस पहले ब्लॉग पोस्ट में यहां छोटी कहानी को कैप्चर किया गया है: http://blogs.msdn.com/b/cbrumme/archive/2003/04/16/51355.aspx। यह मार्शल.ReleaseComObject का उपयोग करने के लिए कुछ सरल, आसान नियमों का पालन करता है। – Cheeso