从.NET应用程序中销毁COM对象

时间:2013-04-12 05:29:34

标签: c# c++ .net com

我有一个遗留的COM组件,我试图从.NET窗体应用程序中使用它。我使用aximp.exe为非托管COM组件创建.NET包装器。然后我使用ISupportInitialize接口的BeginInitEndInit来创建COM类的实例。这工作正常。但是当我尝试使用Marshal.ReleaseComObject销毁对象时,不会调用非托管C ++ COM对象的析构函数。我也尝试了Marshal.FinalReleaseComObject,但仍然没有调用析构函数。任何人都可以告诉我这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

包装器将实现IDispose

WinForm类通常具有组件集合和处理组件的Dispose方法。您可以将对象添加到组件集合中,它将随表单一起处理。 (您甚至可以让表单设计器为您生成所有代码。)

如果您想提前执行此操作,只需在对象上调用Dispose(例如在finally块中或通过using语句隐式调用)。