I'm using the Excel interop and it seems to be creating a process every time I call
new Microsoft.Office.Interop.Excel.Application()
And never ending the process even though I call
xlApp.Quit();
How can I get the processes to end?
I'm using the Excel interop and it seems to be creating a process every time I call
new Microsoft.Office.Interop.Excel.Application()
And never ending the process even though I call
xlApp.Quit();
How can I get the processes to end?
Are you releasing all of your references? (Which means you have to save them in the first place).
For example here's what's in my dispose from some excel interop():
public void Dispose()
{
if(!this.disposed)
{
if(cell != null)
Marshal.FinalReleaseComObject(cell);
if(cells != null)
Marshal.FinalReleaseComObject(cells);
if(worksheet != null)
Marshal.FinalReleaseComObject(worksheet);
if(worksheets != null)
Marshal.FinalReleaseComObject(worksheets);
if (workbook != null)
{
workbook.Close(false, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(workbook);
}
Marshal.FinalReleaseComObject(workbooks);
xlApp.Quit();
Marshal.FinalReleaseComObject(xlApp);
GC.Collect();
GC.WaitForPendingFinalizers();
disposed = true;
}
}
(Not sure if this is perfect but it worked for me!)
Most of the time this happens because you did modify the document and Excel is waiting for some saving. Try something like:
ObjWorkBook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlDoNotSaveChanges,
Type.Missing, Type.Missing);
before quitting