2012-03-02 42 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

相關問題