有没有一种方法可以找出一个对象是否已经被 dispose() 了?

3

我有一个对象,在我的代码中如果它存在,我想要dispose()。有没有一种方法可以查找它是否存在?

Public objExcel As Excel.Application

我能提供的最佳方案是将处理程序放入try...catch块中,如下所示:
Try
   objExcel.dispose()
Catch ex As Exception
   'do nothing
End Try

有没有更优雅、不那么拙劣的方法?

2个回答

2
为了完全处理一个Excel对象,你必须使用marshal类System.Runtime.InteropServices.Marshal。你还需要按相反的顺序释放所有的Excel对象——工作表、工作簿、Excel对象。如果你不这样做,你会在任务管理器中看到Excel进程。
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obgExcel)

1

首先检查对象是否已初始化,然后才可以安全地释放它。

If objExcel isnot nothing then objExcel.dispose()

这将会导致问题并抛出ObjectDisposed异常。在处理完对象后,您需要使用objExcel = Nothing,然后再检查是否为Nothing。 - henda79

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接