Я использую следующие методы. После выполнения этого блока кода я обнаружил, что Microsoft Excel все еще работает в фоновом режиме, проверяя диспетчер задач.Excel Interop Объекты не выпускаются
Редактировать: Точно Процесс Microsoft Excel остается в режиме реального времени. Я просто добавляю это, потому что, когда я впервые начал работать с объектами Excel и Interop COM, иногда многие процессы оставались бегущими после завершения функций.
Как я могу гарантировать, что Excel не будет работать в фоновом режиме после выполнения текущей функции?
я объявить эти переменный с глобальной областью, поскольку несколько функций в конечный итоге нуждающихся в них:
private Excel.Application xls = null;
private Excel.Workbooks workBooks = null;
private Excel.Workbook workBook = null;
private Excel.Sheets sheets = null;
private Excel.Worksheet workSheet = null;
Этот метод предназначен для проверки, если лист существует в данной книге:
private bool sheetExists(string searchString)
{
xls = new Excel.Application();
workBooks = xls.Workbooks;
workBook = workBooks.Open(workbookPath); // <- Where the workbook is saved
sheets = workBook.Sheets;
bool isFound = false;
foreach (Excel.Worksheet sheet in sheets)
{
// Check the name of the current sheet
if (sheet.Name == searchString)
{
Marshal.ReleaseComObject(sheet);
isFound = true;
break;
}
Marshal.ReleaseComObject(sheet);
}
cleanUp(true, xls, workBooks, workBook, sheets);
return isFound;
}
Эта функция предназначена для освобождения COM-объектов:
private void cleanUp(bool saveTrueFalse, params object[] comObjects)
{
workBook.Close(saveTrueFalse);
xls.Application.Quit();
xls.Quit();
foreach (object o in comObjects)
{
Marshal.ReleaseComObject(o);
}
workSheet = null;
sheets = null;
workBook = null;
workBooks = null;
xls = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
Еще один случай, когда вы не понимаете, как работает сборщик мусора. Здесь уже много раз, [как здесь] (http://stackoverflow.com/questions/25134024/clean-up-excel-interop-objects-with-idisposable/25135685#25135685). –