Modelos De Diseño Comunes.

Páginas: 5 (1250 palabras) Publicado: 11 de junio de 2012
Modelos de diseño comunes, Implementar Finalize y Dispose para limpiar recursos no administrados
En algunos casos, se puede proporcionar a los programadores la utilización de un objeto con capacidad para liberar explícitamente estos recursos externos, antes de que el recolector de elementos no utilizados libere el objeto. Si el recurso externo es insuficiente o resulta muy caro, se puedeconseguir un mejor rendimiento si el programador libera explícitamente los recursos cuando ya no se utilizan. Para proporcionar el control explícito, se implementa el método Dispose que proporciona la interfaz IDisposable. El consumidor del objeto deberá llamar a este método una vez hecho esto utilizando el objeto. Se puede llamar al método Dispose aunque todavía existan referencias al objeto.
Hay quetener en cuenta que cuando se proporciona el control explícito mediante el método Dispose, se debe proporcionar la limpieza implícita utilizando el método Finalize. Finalize proporciona una copia de seguridad para evitar que los recursos se pierdan permanentemente si el programador no llama al método Dispose.
Para obtener más información sobre la implementación de los métodos Finalize y Disposepara limpiar los recursos no administrados, vea Programar para la recolección de elementos no utilizados. En el siguiente ejemplo de código se muestra el modelo de diseño básico de implementación del método Dispose.
[Visual Basic]
' Design pattern for a base class.
Public Class Base
Implements IDisposable
' ImplementIDisposable.
Public Overloads Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub

Protected Overloads Overridable Sub Dispose(disposing As Boolean)
If disposing Then
' Free other state (managedobjects).
End If
' Free your own state (unmanaged objects).
' Set large fields to null.
End Sub

Protected Overrides Sub Finalize()
' Simply call Dispose(False).
Dispose (False)
End Sub
EndClass

' Design pattern for a derived class.
Public Class Derived
Inherits Base

Protected Overloads Overrides Sub Dispose(disposing As Boolean)
If disposing Then
' Release managed resources.
End If' Release unmanaged resources.
' Set large fields to null.
' Call Dispose on your base class.
Mybase.Dispose(disposing)
End Sub
' The derived class does not have a Finalize method
' or a Dispose method with parameters because it inherits
' them fromthe base class.
End Class
[C#]
// Design pattern for a base class.
public class Base: IDisposable
{
//Implement IDisposable.
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// Free other state (managed objects).
}
// Free your own state (unmanaged objects).
// Set large fields to null.
}...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • modelos de diseño
  • Diseño Logico y protocolos de comunicaciones
  • Diseño red comunicaciones
  • Diseño De Un Preamplificador Emisor Comun
  • diseño fuente comun
  • Diseño De Comunicaciones Persuasiva
  • Diseño de amplificador emisor comun
  • Modelo Toulbin Comunismo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS