我的程序本质上是一个使用excel程序集打开文件并将信息放入数组列表的表单。
在运行我的程序多次迭代后,我发现在任务管理器中我仍然打开了多个excel文件,尽管它们在我的任务栏中隐藏了。此外,“系统和压缩内存”每次占用更多空间。
我认为我没有正确释放内存,但我不确定如何,我目前有:
shXL = Nothing
wbXl = Nothing
appXL.Quit()
appXL = Nothing
注意:shxl是工作表,wbxl是工作簿,appxl是应用程序。
任何帮助将不胜感激
答案 0 :(得分:0)
这是一些完全正常的开放和关闭代码
Private _xlApp As Microsoft.Office.Interop.Excel.Application
Private _xlWSheet As Microsoft.Office.Interop.Excel.Worksheet
Private _xlWBook As Microsoft.Office.Interop.Excel.Workbook
Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
Dim filename As String = "C:\Scratch\Test.xlsx"
_xlApp = New Microsoft.Office.Interop.Excel.Application
_xlApp.DisplayAlerts = False
_xlWBook = _xlApp.Workbooks.Open(filename)
End Sub
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
'close the workbook and quit the app
If _xlWBook IsNot Nothing Then _xlWBook.Close()
If _xlApp IsNot Nothing Then _xlApp.Quit()
'destroy the objects
If _xlWSheet IsNot Nothing Then _xlWSheet = Nothing
If _xlWBook IsNot Nothing Then _xlWBook = Nothing
If _xlApp IsNot Nothing Then _xlApp = Nothing
'Force garbage collection
GC.Collect()
End Sub
另请注意,如果您不设置:_xlApp.DisplayAlerts = False
,那么当您关闭工作簿时,如果您有任何未保存的更改,这将等待不存在的用户单击是或否则“保存更改”对话框可能会导致对象挂起