假设我有一个 COM 对象(非托管)和 .NET 客户端。
是否需要从.NET客户端调用Marshal.FinalReleaseComObject
方法来释放COM对象?
最佳答案
不需要。不需要从 .Net 客户端显式释放 COM 对象。 COM 对象将像任何其他 .Net 对象一样被收集,并且一旦对它的所有引用都被删除,它将释放它的底层 native 句柄。
显式使用 FinalReleaseComObject
实际上会导致编程错误。如果您的代码中的另一个组件仍在引用 COM 对象,您将从它下面拉出 native 对象。这可能会导致运行时失败。
关于.NET 和 COM 互操作性 : release COM from . NET 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9709141/