Avatar ·

Como liberar corretamente os recursos de objetos COM do Excel Interop em C#?

Olá a todos! Estou escrevendo um pequeno aplicativo em C# para trabalhar com Excel via Microsoft.Office.Interop.Excel. Encontrei um problema: após a execução do código, o processo Excel.exe permanece no Gerenciador de Tarefas e não é encerrado, mesmo quando chamo explicitamente Quit() e Marshal.ReleaseComObject().

Aqui está um exemplo do meu código:

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(workshee