我有一个C#
控制台应用程序
它使用Excel互操作来打开各种xlsm
文件并运行一些宏
一旦宏运行,它关闭Excel并释放最终的COM
个对象我有以下内容:
try
{
foreach(Excel.Workbook wkb in wbs) //<<<<<<<<line 148
{
if(wkb.Name != "HelperRoutinesNetwork.xlsm")
{
wkb.Close(false,Type.Missing,Type.Missing);
if(wkb != null)
{
Marshal.FinalReleaseComObject(wkb);
}
}
}
if(wb != null)
{
Marshal.FinalReleaseComObject(wb);
}
if(wbs != null)
{
Marshal.FinalReleaseComObject(wbs);
}
if(xlApp != null)
{
xlApp.Quit();
Marshal.FinalReleaseComObject(xlApp);
}
}
catch(Exception ex)
{
Console.WriteLine("EXCEPTION_tryingToReleaseComObjs: {0}",ex.ToString());
}
它在foreach
第148行(上面标记)上发现例外:
造成这种情况的原因是什么?如何避免?