如何实现处理一个类,它将对象作为不实现IDisposable的成员?
请参考以下示例了解我的意思:
Public Class MyClass
Implements IDisposable
private emp as EmpClass
private dept as DeptClass
' EmpClass and DeptClass doesn't implemented IDisposable interface.
' IDisposable
Protected Overridable Sub Dispose(disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
emp = Nothing ' --> Can't call Dispose method so I set to null
dept = Nothing ' --> Can't call Dispose method so I set to null
End If
End If
Me.disposedValue = True
End Sub
End Class
从上面看,所有都是托管对象,我可以做必要的更新。所以请建议那个代码好。
被修改
当我尝试创建MyClass的实例时,编译器给了我一个错误,我必须实现IDisposable。以下是我的通话代码。
Using ctx = MyFactory.CreateMyClass()
'DO Something
End Using
答案 0 :(得分:5)
来自MS:
此接口的主要用途是释放非托管资源。 垃圾收集器自动释放分配给的内存 不再使用该对象时的托管对象。但事实并非如此 可以预测何时会发生垃圾收集。此外, 垃圾收集器不了解非托管资源,例如 窗口句柄,或打开文件和流。
因此,如果您的类不使用流,文件或非托管对象,则无需调用Dispose或实现IDisposable。 可以处置的其他事情是删除不再需要的听众