我正在开发一个VB表单应用程序,它使用office互操作库访问excel表单内容。使用Office 2016在Windows 8上进行开发。
采取以下简单的例子:
Import excel = Microsoft.Office.Interop.Excel
Private Sub Form_Load(sender As Object, e as EventArgs) Handles MyBase.Load
Dim excelApp as excel.Application = New excel.Application
excelApp.Quit
End Sub
这似乎会导致泄漏。当表单仍处于打开状态时,来自命令提示符的任务列表调用将显示正在运行的Excel应用程序(在我的计算机上消耗15米的内存)。只有在用户关闭基本VB应用程序后,excel进程才会终止。
对于我的应用程序,取决于在关闭excel进程之前关闭的父进程是不可接受的。我怎样才能杀死这些excel进程?
答案 0 :(得分:1)
您可以使用Marshal
类(MSDN)。我发现以相反的顺序运行所有excel对象是最好的 - >工作表,工作簿,应用程序。
Marshal.FinalReleaseComObject(comObj)