我有一个遗留的COM组件,我试图从.NET窗体应用程序中使用它。我使用aximp.exe
为非托管COM组件创建.NET包装器。然后我使用ISupportInitialize
接口的BeginInit
和EndInit
来创建COM类的实例。这工作正常。但是当我尝试使用Marshal.ReleaseComObject
销毁对象时,不会调用非托管C ++ COM对象的析构函数。我也尝试了Marshal.FinalReleaseComObject
,但仍然没有调用析构函数。任何人都可以告诉我这样做的正确方法是什么?
答案 0 :(得分:0)
包装器将实现IDispose
。
WinForm类通常具有组件集合和处理组件的Dispose方法。您可以将对象添加到组件集合中,它将随表单一起处理。 (您甚至可以让表单设计器为您生成所有代码。)
如果您想提前执行此操作,只需在对象上调用Dispose
(例如在finally
块中或通过using
语句隐式调用)。