如何正确释放 Excel Interop COM 对象的资源?
大家好!我正在用 C# 编写一个小应用程序,通过 Microsoft.Office.Interop.Excel 操作 Excel。遇到一个问题:执行代码后,Excel.exe 进程仍然留在任务管理器中,即使我显式调用了 Quit() 和 Marshal.ReleaseComObject(),它也不会终止。
以下是我的代码示例:
using Excel = Microsoft.Office.Interop.Excel;
public void ExportToExcel()
{
var excelApp = new Excel.Application();
excelApp.Visible = false;
var workbook = excelApp.Workbooks.Add();
var worksheet = workbook.Worksheets[1] as Excel.Worksheet;
worksheet.Cells[1, 1] = "Hello";
worksheet.Cells[1, 2] = "World";
workbook.SaveAs(@"C:\test.xlsx");
workbook.Close();
excelApp.Quit();
Marshal.ReleaseComObject(worksheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(excelApp);
}
运行这个方法后,Excel 进程仍然挂在那里。我尝试了不同的方法: