我一直在使用某些功能,现在我真的想知道,它们之间有什么区别。我知道,xlWorkbook.Close(0)
关闭文件,xlAppQuit();
退出excel应用程序,Marshal.ReleaseComObject(xlWorkbook);
清理 - 释放COM对象。但这在实践中意味着什么?我无法想象这些差异。前两个使我的excel进程从任务管理器中消失(那么如果它们都杀死excel进程,如何关闭一个工作簿而不是退出?),最后一个没有。
答案 0 :(得分:1)
你需要记住你调用的那些类是COM对象。 COM使用引用计数。所以每次你在背景中使用其中一个时它+ 1' s。
要正确清理,您需要减少该计数器。这是通过释放你的引用(wb = null)然后调用Marshall.ReleaseComObject(...)来完成的。
如果失败,请执行此操作,因为这些COM对象会一直存在,直到您的应用程序关闭为止。