Есть ли способ узнать, был ли объект утилизирован () или нет?
У меня есть следующий объект, который позже в моем коде я хочу распоряжаться (), если он существует. Есть ли способ узнать, существует ли он?
Public objExcel As Excel.Application
Лучшее, что я могу придумать, это поместить утилизацию в блок try... catch следующим образом:
Try
objExcel.dispose()
Catch ex As Exception
'do nothing
End Try
У кого-нибудь есть более изящный, менее хитрый метод?
2 ответа
Решение
Чтобы полностью избавиться от объекта Excel, вам необходим класс маршала. System.Runtime.InteropServices.Marshal
, Вам также нужно выпустить все объекты Excel в обратном порядке - рабочий лист, рабочая книга, объект Excel. Если нет, вы можете увидеть процесс Excel в диспетчере задач.
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obgExcel)
Сначала проверьте, инициализирован ли объект, затем вы можете безопасно утилизировать его.
If objExcel isnot nothing then objExcel.dispose()