程序终止后Excel进程仍在运行

时间:2012-08-24 13:28:56

标签: c# excel com process interop

我编写了一些从Excel文件中读取并输出Excel文件的C#程序。但是,我注意到在一天结束时,在程序终止并且所有文件都已关闭后,我仍有大量的Excel进程仍在运行。以下是我处理文件创建和关闭的方法:

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Worksheet ws = (Worksheet)wb.Worksheets[1];
...
wb.Close(true, saveDirectory + "\\" + reportName, false);
xlApp.Quit();
Marshal.ReleaseComObject(wb);
Marshal.ReleaseComObject(xlApp);
this.Close();

我错过了什么吗?任何建议都表示赞赏。

问候。

1 个答案:

答案 0 :(得分:4)

您的代码未发布所有COM引用(例如xlApp.Workbooks.Add创建对永不释放的Workbooks对象的引用。因此,Excel实例不会关闭,如this KB article中所述,并在许多StackOverflow问题中详细讨论过。

当您的进程终止时,当COM检测到客户端暂时没有ping时,Excel实例最终会关闭。