我有一个程序使用某种Ole连接建立与Cam/cad软件Powershape的连接。它使用类变量与powershape建立连接,并且其属性包含有关打开模型的信息。如何最终化/销毁类变量
问题是,只有当类变量完成或超出范围时,此连接才会结束。
Dim powershapeRoot As New PSAutomation(Delcam.ProductInterface.InstanceReuse.UseExistingInstance)
这工作得很好内部替补,因为它超出范围,但这个方案需要你的时候,你需要从PowerSHAPE中的数据做了几次,它可能需要一些时间,每次重新建立连接。所以你可以使它成为全局变量,所以你只需要连接一次。
Dim powershapeRoot As New PSAutomation(Delcam.ProductInterface.InstanceReuse.UseExistingInstance)
Powershapeglobal = powershapeRoot
但是现在变量只在程序关闭后才会超出范围。我试图使用:
Powershapeglobal.dispose
Powershapeglobal = nothing
这些都没有帮助和连接似乎仍然存在,因为变量仍然存在?你如何摧毁好的变量?
在VBA中你可以使用“设置”关键字设置对象variabile的为“无” – user3598756
除了正确地释放COM对象,以使指针不再存在,你也应该腾出GC对象。 Andrew Whitechapel在他的书中详细介绍了这一点,即关于发布COM对象的相关节选:https://msdn.microsoft.com/en-us/library/office/aa679807(v=office.11).aspx –
这听起来像你依赖的PSAutomation类中的一个错误。一个正确设计和实现的类将使用IDisposable模式。 –