【问题标题】:Is there a way to find out if an object has been dispose() or not?有没有办法找出一个对象是否已被 dispose() 处理?
【发布时间】:2013-10-17 16:21:32
【问题描述】:

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

Public objExcel As Excel.Application

我能想到的最好的办法就是将处理放入一个 try...catch 块中,如下所示:

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

有没有人有更优雅、更简洁的方法?

【问题讨论】:

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


    【解决方案1】:

    要完全处理 Excel 对象,您必须使用 marshal 类。 System.Runtime.InteropServices.Marshal。您还需要以相反的顺序释放所有 excel 对象 - 工作表、工作簿、excel 对象。如果没有,您可以在任务管理器中查看 Excel 进程。

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

    【讨论】:

      【解决方案2】:

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

      If objExcel isnot nothing then objExcel.dispose()
      

      【讨论】:

      • 这会导致问题并抛出 ObjectDisposed 异常。在处理完 objExcel = Nothing 之后,您需要使用 IsNot Nothing。
      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 2013-01-23
      • 2011-08-30
      • 1970-01-01
      相关资源
      最近更新 更多