2016-11-01 7 views
0

У меня настоящая боль проблемы, тогда как Excel.Application() не хочет выпускаться, несмотря ни на что. Даже после того, как новый класс создается и размещается сразу после этого, он все равно появляется в списке процессов.Как правильно утилизировать класс Excel.Application

if (_ExcelApp == null) 
    _ExcelApp = new Microsoft.Office.Interop.Excel.Application(); 
Dispose(); 

public void Dispose() 
{ 
    if (_ExcelApp != null) 
    { 
     try 
     { 
      _ExcelApp.Quit(); 
      Marshal.FinalReleaseComObject(_ExcelApp); 
     } 
     catch (Exception) { } 
      _ExcelApp = null; 
    } 
} 

Пожалуйста, помогите!

+1

[Релевантные?] (Http://stackoverflow.com/questions/27930307/why-does-microsoft -office-interop-excel-application-quit-leave-the-background) – stuartd

+0

Проверьте [вопрос] (http://stackoverflow.com/questions/9962157/safely-disposing-excel-interop-objects-in-c) – shadow

+0

Проверьте это http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects –

ответ

3

Не выпускается, потому что не все COM-объекты, связанные с _ExcelApp, освобождены. Если вы предоставите весь фрагмент кода, он может быть более понятным.

Workbooks wb =_ExcelApp.Workbooks; 
Workbook book = wb.Add(); 

Тогда в попытке поймать:

  try 
      { 
       book.Close(); 
       Marshal.ReleaseComObject(book); 
       wb.Close(); 
       Marshal.ReleaseComObject(wb); 
       _ExcelApp.Quit(); 
       Marshal.FinalReleaseComObject(_ExcelApp); 
      } 
     catch (Exception) { } 
      _ExcelApp = null; 
    } 

_ExcelApp.WorkBooks.Add(); создайте новый WorkBook, и вы не отпустите этот объект. Также он создает объект Workbooks, который также должен быть выпущен.

Как я уже упоминал ранее, будет лучше, если вы показать весь код (если это возможно, конечно)

+0

Итак, я закончил выпуск каждого COM-объекта после их использования и установил для них значение null. Это оказалось большой проблемой, поскольку у меня было несколько диапазонов столбцов и ячеек, рабочих листов, книг и т. Д. –

+0

Могу ли я добавить, что я не установил исходные объекты в нуль, так что, вероятно, это был мой недостаток. Ta mojo –

 Смежные вопросы

  • Нет связанных вопросов^_^