如何正确处理Excel.Applicationclass
How to dispose of Excel.Application class correctly
我有一个问题真的很痛苦,而 Excel.Application()
无论如何都不想被释放。即使在一个新的 class 被实例化并立即释放后,它仍然出现在进程列表中。
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;
}
}
请帮忙!
不释放是因为与_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 对象。
正如我之前提到的,如果你显示所有代码会更好(当然如果可能的话)
我有一个问题真的很痛苦,而 Excel.Application()
无论如何都不想被释放。即使在一个新的 class 被实例化并立即释放后,它仍然出现在进程列表中。
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;
}
}
请帮忙!
不释放是因为与_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 对象。
正如我之前提到的,如果你显示所有代码会更好(当然如果可能的话)