2012-03-02 86 views
2

我可能是唯一一个仍然可以自动执行excel的人,而且我正在以更好地处理COM对象的方式来执行此操作,但现在我只需导入Microsoft.Office.Interop.Excel并进行操作即可。起初给我很多悲伤的事情是悬挂excel.exe进程,但是有大量资源在线修复that。在这一点上,我对我的处理能力非常有信心。如何关闭windows窗体应用程序和excel.exe进程进行交互(可能通过垃圾收集器)?

我注意到并想知道的一件事是,如何关闭Windows窗体应用程序与在后台运行的excel.exe交互,可能更具体地说是垃圾收集器。我已经写了不少excel自动化projects,并注意到在我运行我的程序.exe并完成后,有一个excel.exe进程挂起,直到我关闭窗口窗体应用程序的弹出窗口。为什么会发生?

在窗口关闭之后,vb.net是否不会调用垃圾回收?看看我写的代码,没有提到“关闭应用程序窗口”事件,并且垃圾收集器和释放COM对象调用在代码中都是正确的,所以在代码执行后我似乎很好奇我认为垃圾收集已被调用,如代码中),有一个excel.exe进程,直到我实际关闭Windows窗体应用程序窗口。

没有什么紧迫的,比任何事情都更好奇,但任何直接的将不胜感激。谢谢。

+0

你确定你的代码能够杀死Excel吗?这对我来说是一个长期存在的问题,因此我放弃了无窗口Excel。之后,我会建议实现一个明确释放Excel的表单关闭事件,并且不要依赖任何垃圾回收器。 – 2012-03-02 17:54:22

+0

我打开任务管理器,打开程序之前,我的进程显示没有其他excel.exe实例。然后我打开我的程序并执行它(保持excel invisibile,尽管我已经用excel显示并且没有关系),并且会出现一个excel.exe实例(或更多,取决于代码)。似乎有一个excel.exe的实例挂起,直到我真的关闭我的Windows窗体应用程序,但随后它消失。正确杀死excel是一件麻烦事,但如果你小心,你绝对可以做到。看到我的链接和我之后链接的代码。 – asjohnson 2012-03-02 18:00:15

回答

0

确保您在代码块末尾的excel对象上调用了Quit方法,并且您可以进行垃圾回收以获得较好的度量,但应在短时间内关闭。我有同样的问题,但发现我不得不手动处置。

+0

我在工作簿和应用程序上调用quit方法。我摆脱了所有的excel.exe的实例,但有一个挂起,直到我关闭Windows窗体应用程序,我运行它,我不明白为什么它会等到那时。 – asjohnson 2012-03-06 14:53:09

相关问题