如何正确处理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 对象。

正如我之前提到的,如果你显示所有代码会更好(当然如果可能的话)