有没有办法找出一个对象是否已被dispose()?

时间:2013-10-17 16:21:32

标签: vb.net object try-catch dispose disposable

我有以下对象,稍后在我的代码中我想处理它()如果它存在。有没有办法找到它是否存在?

Public objExcel As Excel.Application

我能想出的最好的办法就是把处理放到这样的试试块中:

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

有没有人有一种更优雅,更少kludgy的方法?

2 个答案:

答案 0 :(得分:2)

要完全处置Excel对象,您必须是编组类。 System.Runtime.InteropServices.Marshal。您还需要以相反的顺序释放所有excel对象 - 工作表,工作簿,Excel对象。如果不这样,您可以在任务管理器中看到Excel进程。

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

答案 1 :(得分:1)

首先检查对象是否已初始化,然后您可以安全地处置它。

If objExcel isnot nothing then objExcel.dispose()