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

Destroying a COM object from .NET application

本文关键字:COM 对象 net 应用程序      更新时间:2023-10-16

我有一个遗留的COM组件,我正试图从。net windows窗体应用程序中使用。我使用aximp.exe为非托管COM组件创建一个. net包装器。然后我使用ISupportInitialize接口的BeginInitEndInit来创建COM类的实例。这工作得很好。但是当我尝试使用Marshal.ReleaseComObject销毁对象时,未托管的c++ COM对象的析构函数没有被调用。我也尝试了Marshal.FinalReleaseComObject,但仍然没有调用析构函数。谁能告诉我正确的做法是什么?

包装器将实现IDispose

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

如果您想更早地这样做,只需在对象上调用Dispose(例如在finally块中或通过using语句隐式地)。