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

我写了一些从Excel文件中读取并输出Excel文件的C#程序。 但是,我注意到在一天结束的时候,在程序终止并且所有文件都closures之后,我仍然有大量的Excel进程正在运行。 以下是我如何处理文件的创build和closures:

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(); 

我错过了什么吗? 任何意见表示赞赏。

问候。

您的代码不释放所有COM引用(例如xlApp.Workbooks.Add创build一个从未释放的Workbooks对象的引用)。 因此,如本知识库文章中所述,Excel实例不会closures,并会在大量StackOverflow问题中进行详细讨论。

当COM检测到有一段时间没有从客户端ping通时,Excel实例最终会在进程终止后closures。