[英]How to release excel process?
我正在使用Excel互操作,并且每次调用时似乎都在创建一个进程
new Microsoft.Office.Interop.Excel.Application()
即使我打电话也永远不会结束流程
xlApp.Quit();
我如何才能结束流程?
您要发布所有参考资料吗? (这意味着您必须首先保存它们)。
例如,这是我通过一些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;
}
}
(不确定这是否完美,但对我有用!)
如果您不释放使用过的COM对象,Excel将不会退出。
在大多数情况下,发生这种情况是因为您确实修改了文档,而Excel正在等待某些保存。 尝试类似:
ObjWorkBook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlDoNotSaveChanges,
Type.Missing, Type.Missing);
退出之前
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.