我已經看過多次。上次我看到有人創建了一個Excel應用程序對象。他結束了自己的應用程序那樣:Does Object =在Application.Exit調用之前沒有任何意義嗎?
myExcelObj = Nothing
Application.Exit()
我敢肯定,使參考點什麼事也不會關閉底色運行Excel應用程序。也看到了類似下面的非可視對象很多:
Public Class myClass
Var1 as Integer = 0
Var2 as SQLConnection
Var3 as Whatever
Public Sub New()
Var1 = Maths.Rnd(0,1)
Var2 = SomeStaticClass.GetSQLConnection()
Var3 = New Whatever(Var1)
End Sub
End Sub
(...)
// Somewhere in the Code (...)
Private Sub EndItAll(sender as Object, e as EventArgs)
Me.My_myClassObject = Nothing
Application.Exit()
End Sub
這有任何意義嗎?無論如何不會關閉應用程序本身釋放所有已用內存?什麼時候這樣做是有道理的?
這沒有意義。許多.NET程序員並不真正瞭解垃圾收集器的工作原理和習慣,尤其是在Office interop代碼中。 [本Q + A]中的一些背景(https://stackoverflow.com/questions/17130382/understanding-garbage-collection-in-net)。 –
一如既往,您的絕佳回答。這將爲「盧克賦予漢斯帕蘇特名聲」 - 增加另一個。謝謝。 – Luke
我會檢查是否有多個隱藏的Excel實例仍然在後臺運行(任務管理器)完成後。如果沒有正確清理,Excel互操作對象會保持Excel運行。這可能不是這種情況,但看起來他正在清理VBA風格的對象。他可能習慣使用VBA。可能沒有其他問題,但我會檢查那些仍在運行的Excel應用程序以防萬一。 –