我有一個程序使用某種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模式。 –