如何释放后期绑定的 COM 对象?

Posted

技术标签:

【中文标题】如何释放后期绑定的 COM 对象?【英文标题】:How to release late bound COM objects? 【发布时间】:2009-08-03 14:11:49 【问题描述】:

我想我也必须释放后期绑定的 COM 对象。 但是这是如何直接完成的呢?

在我的情况下,我使用 C# 中的以下代码从 Google 地球(简化)中获取焦点:

Type oClassType = Type.GetTypeFromProgID("GoogleEarth.ApplicationGE");
object oGE = Activator.CreateInstance(oClassType);
object oCamera = oGE.GetType().InvokeMember("GetCamera", System.Reflection.BindingFlags.InvokeMethod, null, oGE, new object[]  0 );
double dFocusLatitude = (double)oCamera.GetType().InvokeMember("FocusPointLatitude", System.Reflection.BindingFlags.GetProperty, null, oCamera, null);
double dFocusLongitude = (double)oCamera.GetType().InvokeMember("FocusPointLongitude", System.Reflection.BindingFlags.GetProperty, null, oCamera, null);

那么在这种情况下如何释放相机和 Google 地球对象?

【问题讨论】:

【参考方案1】:

您可以使用Marshal.ReleaseComObject

例如

if(Marshal.IsComObject(oGE)==true)

  Marshal.ReleaseComObject(oGE);

【讨论】:

以上是关于如何释放后期绑定的 COM 对象?的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中使用 ComInterop 的 COM 对象后期绑定

Excel VBA后期绑定Microsoft DAO 3.6对象库

PHP面向对象-后期静态绑定

.net CLR 在 VBA (Access) 中的后期绑定

PHP 后期静态绑定问题

关于JAVA中的前期绑定 后期绑定(动态绑定)