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?

有帮助吗?

解决方案

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)

其他提示

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

If objExcel isnot nothing then objExcel.dispose()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top