Dispose

Solo disponible en BuenasTareas
  • Páginas : 4 (863 palabras )
  • Descarga(s) : 0
  • Publicado : 20 de agosto de 2012
Leer documento completo
Vista previa del texto
El modelo para desechar un objeto, lo que se conoce como modelo de Dispose, sirve para imponer orden sobre la duración de un objeto. El modelo de Dispose solo se usa para los objetos que tienenacceso a recursos no administrados. Esto se debe a que el recolector de elementos no utilizados es muy eficaz al recuperar objetos administrados no usados.
El método Dispose de un tipo debe liberar todoslos recursos de su propiedad. También debe liberar todos los recursos que posean sus tipos base; para ello, llama al métodoDispose de su tipo primario. El método Dispose del tipo primario debe liberartodos los recursos que posee y, a su vez, llamar al método Dispose de su tipo primario, de modo que este patrón se propaga por la jerarquía de tipos base. Para asegurarse de que los recursos selimpien siempre correctamente, un método Dispose debe debe ser invocable varias veces sin que se produzca una excepción.
No supone ninguna ventaja sobre el rendimiento implementar el método Dispose entipos que utilizan sólo recursos administrados (como matrices) porque el recolector de elementos no utilizados los reclama automáticamente. Utilice principalmente el método Dispose en los objetosadministrados que utilizan los recursos nativos y en los objetos COM que se exponen a .NET Framework. Los objetos administrados que utilizan recursos nativos (como la clase FileStream) implementan lainterfaz IDisposable.
Un método Dispose debería llamar al método SuppressFinalize en el objeto que está desechando. Si el objeto se encuentra en la cola de finalización en ese momento,SuppressFinalize evitaque se llame a su método Finalize. Recuerde que ejecutar un método Finalize afecta al rendimiento. Si el método Dispose ya ha limpiado el objeto, no es necesario que el recolector de elementos noutilizados llame al método Finalize del objeto.
El ejemplo de código proporcionado para el método GC.KeepAlive muestra cómo la recolección de elementos no utilizados rigurosa puede hacer que se...
tracking img