Forums Últimos mensajes - Powered by IBM
 

no logro implementar dispose

01/04/2005 - 07:35 por Gaston | Informe spam
He creado una clase... que se conecta a una BD y demàs...

pero no logro entender como
implementar el metodo dispose...
he leìdo la ayuda... y sigo sin entender...

alguien me puede dar un ejemplo
para un poco entendedor?
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
01/04/2005 - 16:20 | Informe spam
Debes implementar el patron Disposable en tu clase. Los pasos para crearlo
son estos:

1) Implementas la interface IDisposable en la clase.
2) Creas un campo que diga si se ha llamado a Dispose o no.
3) Creas un metodo Dispose que tome un Boolean como parametro.
4) Implementas este metodo de forma que liberas recursos manejados solo
cuando el parametro es True. Debes tener en cuenta que el metodo no debe
fallar si se lo llama mas de una vez.
5) En el metodo Dispose sin parametros llamas al otro Dispose con el
parametro True y luego llamas a GC.SuppressFinalize con el objeto mismo.
Esto ultimo evita que se llame al metodo Finalize de la clase.
6) Sobreescribes el metodo Finalize y en el llamas a Dispose con el
parametro False.
7) En todos tus metodos y propiedades chequeas si ya se llamo a Dispose y si
lanzas la excepcion ObjectDisposedException.

Entonces te quedaria asi:

Public Class DisposableObject
Implements IDisposable

Protected _disposed As Boolean

Public Sub Dispose() Implements System.IDisposable.Dispose

Dispose(True)

GC.SuppressFinalize(Me)

End Sub

Protected Overridable Sub Dispose(ByVal disposing As Boolean)

If Not _disposed Then

If disposing Then
' Eliminar recursos manejados
End If

' Eliminar recursos no manejados

_disposed = True

End If

End Sub

Protected Overrides Sub Finalize()
Dispose(False)
MyBase.Finalize()
End Sub

Public Sub MiSub()

If _disposed Then Throw New
ObjectDisposedException("DisposableObject")

' El codigo aqui

End Sub

End Class

De todas formas revisa si realmente necesitas mantener los recursos durante
la vida del objeto, ya que si no es necesario mejor es crearlos y
eliminarlos en cada metodo.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
https://mvp.support.microsoft.com/p...4EF5A4191C

Preguntas similares