Avatar ·

Wie gibt man Ressourcen von COM-Objekten in Excel Interop in C# richtig frei?

Hallo zusammen! Ich schreibe eine kleine Anwendung in C# für die Arbeit mit Excel über Microsoft.Office.Interop.Excel. Ich bin auf ein Problem gestoßen: Nach der Ausführung des Codes bleibt der Prozess Excel.exe im Task-Manager und wird nicht beendet, selbst wenn ich explizit Quit() und Marshal.ReleaseComObject() aufrufe.

Hier ist ein Beispiel meines Codes:

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