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

时间:2009-08-03 14:11:49

标签: c# .net com release late-binding

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

在我的情况下,我使用C#中的以下代码来获取谷歌地球的重点(简化):

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 个答案:

答案 0 :(得分:6)

您可以使用Marshal.ReleaseComObject

e.g。

if(Marshal.IsComObject(oGE)==true)
{
  Marshal.ReleaseComObject(oGE);
}