我真的很痛苦,而Excel.Application()
不想被释放,无论如何。即使在新类被实例化并在之后立即处理之后,它仍然会出现在进程列表中。
if (_ExcelApp == null)
_ExcelApp = new Microsoft.Office.Interop.Excel.Application();
Dispose();
public void Dispose()
{
if (_ExcelApp != null)
{
try
{
_ExcelApp.Quit();
Marshal.FinalReleaseComObject(_ExcelApp);
}
catch (Exception) { }
_ExcelApp = null;
}
}
请帮忙!
答案 0 :(得分:3)
它不会释放,因为并非所有与_ExcelApp相关的COM对象都已发布。如果你提供所有代码,它可能会更清晰。
Workbooks wb =_ExcelApp.Workbooks;
Workbook book = wb.Add();
然后在try catch:
try
{
book.Close();
Marshal.ReleaseComObject(book);
wb.Close();
Marshal.ReleaseComObject(wb);
_ExcelApp.Quit();
Marshal.FinalReleaseComObject(_ExcelApp);
}
catch (Exception) { }
_ExcelApp = null;
}
_ExcelApp.WorkBooks.Add();创建新的WorkBook,您不会释放此对象。此外,它还创建了必须发布的Workbooks对象。
如前所述,如果您显示所有代码(如果可能的话,那么)会更好