处理自己的类的处置时,例如:
Protected Overridable Sub Dispose(disposing As Boolean)
If Disposed = False Then
If disposing Then
...
End If
...
End If
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Protected Overrides Sub Finalize()
Dispose(False)
End Sub
由于我们抑制了finalize,因此我是否还应该在Dispose中将通用值(例如字符串,整数)设置为空值(例如,对于字符串,则为IE vbnullstring)?通常,我可以使用它来处理计时器,但是我应该在这里抑制定型,还是在超出范围后仍将其删除。
谢谢!
重要的是要了解配置终结器的实际作用。处置允许您显式释放对象所拥有的非托管资源,还可以处置托管对象以允许它们执行相同的操作。在释放对象占用的内存之前,需要释放这些资源。如果您明确地放置对象,则垃圾收集器可以在第一遍回收对象的内存。如果您不处理,GC必须在第一遍完成,并且在第二遍之前不能回收内存,从而使垃圾收集效率降低。
如果您Nothing
在处置对象时未将其字段设置为,那么这也会减慢回收内存的速度。在大多数情况下,这没什么大不了的。但是,如果您的字段引用的对象本身占用大量内存,那么问题就更大了。这就是由IDE自动添加的注释指定要清除该Dispose
方法中可能引用大型对象的字段的原因。请记住,将变量设置为Nothing
在许多情况下可能无济于事,但是,只要您完成了该变量,它肯定不会受到伤害。如有疑问,请使您的字段为空。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句