0

I am using C# to write some information to an Excel file:

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;
using System.Globalization;

public void OpenExcel(string folder, string filename)
{
    this.folder = folder;
    this.filename = filename;
    path = folder + @"\" + filename;

    if (File.Exists(path) != true) //if the output file does not exists, create it
    {
        var app = new Microsoft.Office.Interop.Excel.Application();
        var temp = app.Workbooks.Add();
        temp.SaveAs(path);
        temp.Close();
    }

    wb = excel.Workbooks.Open(path);
}

After I am done and have saved the file, I want to close it:

public void Close()
{
    wb.Close(false);

    excel.Quit();
    excel.Application.Quit();

    System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);

    workSheet = null;
    wb = null;
    excel = null;

    GC.Collect();
    GC.WaitForPendingFinalizers();
    GC.Collect();
}

Both of the voids above are part of a class object named ExcelFile. However, when I use the code above and exit the program I have made, Excel still is left as a background process like in this question: C# closing Excel after using

I have seen that there are a few threads on stackoverflow on this topic, but no solution seems to work for me. I want to avoid killing all Excel processes if possible since this is a program that will make calculations using thread pool that will take hours to make.

KGB91
  • 630
  • 2
  • 6
  • 24
  • https://stackoverflow.com/questions/61176667/cant-properly-close-excel-application#comment108226332_61176667? – GSerg Apr 27 '20 at 13:04
  • I see it in the final release on another windows 10 machine, but (currently) not when I debug it on my own machine. – KGB91 Apr 27 '20 at 13:08

0 Answers0