Class ComponentsContainer ' a component contains other components'
Inherits System.ComponentModel.Component
Private foo as New Component
Private bar as New Component
Protected Override Sub Finalize()
foo.Dispose() ' HERE ? '
bar.Dispose()
MyBase.Finalize()
End Sub
Protected Overrides Sub Dispose(disposing As Boolean)
If disposing Then
foo.Dispose() ' OR HERE ? '
bar.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
End Class
Class ComponentsContainer ‘ a component contains other components’ Inherits System.ComponentModel.Component Private foo as New
Share
You should not (don’t have to) Dispose managed resources from the Finalizer:
And from that it follows that if your class does not have unmanaged resources you don’t need a Finalizer at all.
Note: Your class is missing thePublic Sub Dispose()overload.Edit:
Since
fooandbarare managed resources (extending Component) you only need theProtected Overrides Sub Dispose(disposing As Boolean)method. The version in the question is correct. And simply drop theFinalize().