我正在使用Excel互操作,似乎每次调用时都会创建一个进程
new Microsoft.Office.Interop.Excel.Application()
即使我打电话
也永远不会结束这个过程xlApp.Quit();
如何让流程结束?
答案 0 :(得分:3)
您是否正在发布所有参考文献? (这意味着你必须首先保存它们。)
例如,这是我从一些excel interop()中处理的内容:
public void Dispose()
{
if(!this.disposed)
{
if(cell != null)
Marshal.FinalReleaseComObject(cell);
if(cells != null)
Marshal.FinalReleaseComObject(cells);
if(worksheet != null)
Marshal.FinalReleaseComObject(worksheet);
if(worksheets != null)
Marshal.FinalReleaseComObject(worksheets);
if (workbook != null)
{
workbook.Close(false, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(workbook);
}
Marshal.FinalReleaseComObject(workbooks);
xlApp.Quit();
Marshal.FinalReleaseComObject(xlApp);
GC.Collect();
GC.WaitForPendingFinalizers();
disposed = true;
}
}
(不确定这是否完美,但它对我有用!)
答案 1 :(得分:1)
如果不释放使用过的COM对象,Excel将不会退出。
答案 2 :(得分:0)
大部分时间都会发生这种情况,因为您确实修改了文档而Excel正在等待一些保存。 尝试类似:
ObjWorkBook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlDoNotSaveChanges,
Type.Missing, Type.Missing);
退出前