Tengo el siguiente código:C# = ¿Por qué los procesos de Excel no terminan?
private bool IsMousetrapFile(string path)
{
logger.Log(validateFileMessage + path);
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbooks workbooks = xlApp.Workbooks;
Excel.Workbook xlWorkBook = workbooks.Open(path, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Excel.Sheets worksheets = (Excel.Sheets)xlWorkBook.Worksheets;
Excel.Worksheet ws = null;
foreach (string sheet in expectedWorksheets)
{
try
{
ws = (Excel.Worksheet)worksheets.get_Item(sheet);
logger.Log(validMousetrapFileMessage + path);
}
catch
{
logger.Log(validateSheetError + sheet + ": " + path);
if (ws != null)
Marshal.ReleaseComObject(ws);
Marshal.ReleaseComObject(worksheets);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(xlApp);
return false;
}
}
if (ws != null)
Marshal.ReleaseComObject(ws);
Marshal.ReleaseComObject(worksheets);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(workbooks);
Marshal.ReleaseComObject(xlApp);
return true;
}
Efectivamente, comprueba si un libro de Excel contiene hojas específicas. Independientemente de si hay o no, quiero que los procesos de Excel finalicen. Sin embargo, cada vez que se abre un nuevo libro de trabajo, se agrega un nuevo proceso y nunca se elimina?
PS. Sé que hay código duplicado allí ... se debe arreglar pronto :)
Aquí está la víctima como si preguntó: http://stackoverflow.com/questions/5357244/quitting-excel-with-c-while-using-excel-automation – gideon
vea el enlace para obtener más detalles sobre cuándo Excel todavía se ejecuta cuando llama a dejar de fumar. – gideon