Pergunta

I have the following object that later in my code I want to dispose() IF it exists. Is there a way to find if it exists?

Public objExcel As Excel.Application

The best I could come up with is to put the disposal into a try...catch block like this:

Try
   objExcel.dispose()
Catch ex As Exception
   'do nothing
End Try

Does anyone have a more elegant, less kludgy method?

Foi útil?

Solução

To dispose of an Excel object completely you must you the marshal class. System.Runtime.InteropServices.Marshal. You also need to release all the excel objects in reverse order - Worksheet, workbook, excel object. If you don't you can see the Excel process in task manager.

System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obgExcel)

Outras dicas

First check if object is initialized, then you can safely dispose it.

If objExcel isnot nothing then objExcel.dispose()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top