我正在开发一个用于Microsoft.Office.Interop.Excel.Application
从 Excel 文件中读取值的 C# 项目:
try {
Application xlApp = new Application();
Workbook workbook = xlApp.Workbooks.Open(filename)
// ... Load Excel values ...
} finally {
// ... Tidy up ...
}
在该finally
块中,我想确保所有内容都已关闭并正确处理,因此内存中没有任何内容,并且 Excel 可以干净地关闭。已经看到关于这段代码应该是什么样子的各种线程(比我想象的更复杂!)但它可能包括的一件事是:
if (workbook != null) {
workbook.Close();
// ... possibly also Marshal.FinalReleaseComObject(workbook);
}
但是,如果工作簿已经关闭,这会引发错误,那么我该如何安全地检查呢?如果可能的话,宁愿不要只捕获错误,因为这种类型的事情往往会扭曲调试。有没有一种干净的方法可以在关闭之前找出工作簿状态?
还有一个问题 - 我想知道如果之后workbook.Close()
是否需要xlApp.Quit();
- 退出 Excel 应用程序会导致workbook.Close()
(以及任何 COM 对象释放)隐式发生吗?