Mi sto imbattendo in un problema con un po 'di codice che sto eseguendo il debug. L'interoperabilità di Excel viene utilizzata per estrarre alcuni valori da una cartella di lavoro; tuttavia, Excel rimane aperto dopo che il programma è stato chiuso. Ho provato la soluzione tradizionale, ma conserva ancora un riferimento a Excel aperto su tutte le macchine in cui il codice viene eseguitoIl processo di Excel rimane aperto dopo l'interruzione; metodo tradizionale non funzionante
private void TestExcel()
{
Excel.Application excel = new Excel.Application();
Excel.Workbooks books = excel.Workbooks;
Excel.Workbook book = books.Open("C:\\test.xlsm");
book.Close();
books.Close();
excel.Quit();
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(books);
Marshal.ReleaseComObject(excel);
}
Anche questo semplice pezzo di codice mantiene il processo in esecuzione con più file (xlsm, xlsx, xls). In questo momento abbiamo una soluzione per uccidere i processi di Excel che abbiamo aperto, ma preferirei farlo funzionare per la mia sanità mentale.
Devo aggiungere che lo ho ristretto alla variabile Workbook
. Se rimuovo la chiamata a books.Open()
e tutti i riferimenti a book
, si chiude correttamente.
Il tuo codice ha funzionato quando l'ho testato, potresti ottenere un'eccezione in fase di esecuzione che causa il problema? – msmucker0527