我有一个遗留的COM组件,我试图从.NET窗体应用程序中使用它。我使用aximp.exe
为非托管COM组件创建.NET包装。然后我使用ISupportInitialize
接口的BeginInit
和EndInit
来创建COM类的一个实例。这工作正常。但是当我尝试使用Marshal.ReleaseComObject
销毁对象时,未托管的C++ COM对象的析构函数没有被调用。我也试过Marshal.FinalReleaseComObject
,但仍然没有调用析构函数。有人可以告诉我什么是正确的方法吗?销毁.NET应用程序中的COM对象
回答
包装将执行IDispose
。
WinForm类通常有一个组件集合和一个处理组件的Dispose方法。您可以将对象添加到组件集合中,并将它与表单一起处理。 (你甚至可以让窗体设计器为您生成的所有代码。)
如果你想早做,只是调用对象Dispose
(如在finally
块或者隐含通过using
语句)。
我只从Dispose调用FinalReleaseCOMObject。 。我手动调用从我的WinForm应用程序Dispos – Asha
你应该让aximp.exe和系统。它生成的System.Windows.Forms.AxHost派生包装为你工作。如果你使用的是Visual Studio或者equiv,让WinForm设计器为你的组件的生命周期生成代码。就像向COM对象添加项目引用一样简单,将控件添加到WinForms工具箱并将其拖到窗体。这种方式更易于维护。如果您有特殊情况,请先尝试这种方式,然后开发您的特殊情况。 –
- 1. 如何销毁C#中的COM对象?
- 2. 销毁Android应用程序
- 3. 销毁对象
- 4. 对象销毁
- 5. 实时升级.NET应用程序中使用的COM对象
- 6. 销毁Ember.js中的对象
- 7. 强制进程关闭时,COM对象被销毁
- 8. Rails 3.1应用程序无法销毁mysql2对象
- 9. 在应用程序中销毁会话
- 10. C++销毁对象
- 11. 销毁停用对象
- 12. 在X ++中销毁对象
- 13. 如何销毁我的应用程序?
- 14. 销毁对象的::地图
- 15. 销毁对象的错误
- 16. 停止对销毁应用
- 17. 在heroku上销毁应用程序
- 18. 如何销毁ExtJS应用程序?
- 19. 从Marathon销毁应用程序将其放入部署中。如何在马拉松中销毁应用程序?
- 20. Unity2d - 销毁对象使用销毁(gameObject)//它会销毁与脚本连接的对象
- 21. 如何销毁线程对象
- 22. 如何销毁PDFJS对象?
- 23. 如何销毁java对象?
- 24. RSpec与Factory_girl - 销毁对象
- 25. Python:全局对象销毁
- 26. 销毁Oracle PLSQL对象
- 27. 何时销毁对象?
- 28. 销毁主类对象
- 29. 销毁成员对象
- 30. 如何安全销毁wxPython应用程序的对话窗口?
这可能意味着您有其他优秀的对象引用。你确定没有吗? –
谢谢..但我如何找到其他参考? – Asha
如果你拥有COM对象的实现(并且我猜你有你的系统,那么析构函数从未被调用过),你可以监视AddRef/Release调用和引用计数。 –