0

如何实现一个类的处置,该类具有对象作为不实现 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
4

1 回答 1

5

来自女士

该接口的主要用途是释放非托管资源。当不再使用该对象时,垃圾收集器会自动释放分配给托管对象的内存。但是,无法预测垃圾收集何时发生。此外,垃圾收集器不了解非托管资源,例如窗口句柄或打开的文件和流。

因此,如果您的类不使用流、文件或非托管对象,则无需调用 Dispose 或实现 IDisposable。其他可以处理的事情是删除不再需要的听众

于 2013-07-12T08:47:09.970 回答