Disponer

Definición: ¿Qué significa Dispose?

En el contexto de C #, dispose es un método de objeto que se invoca para ejecutar el código necesario para limpiar la memoria y liberar y restablecer recursos no administrados, como identificadores de archivos y conexiones de bases de datos. Dispose mejora el rendimiento y optimiza la memoria al liberar objetos inmanejables y recursos escasos, como los identificadores de Interfaz de dispositivo gráfico (GDI) que se usan en aplicaciones con espacio restringido de Windows.

El método Dispose, proporcionado por la interfaz IDisposable, implementa las llamadas Dispose. El patrón Dispose está diseñado para la limpieza oportuna y predecible, la prevención de fugas de memoria temporales y la eliminación de recursos.

Techinfo explica Dispose

El marco .NET facilita la recolección de basura (GC), administra la memoria y los recursos de objetos y recupera referencias de memoria de objetos no válidas invocando Finalize, un método no determinista. El método Dispose controla la vida útil de las instancias de memoria de objetos y proporciona un control de limpieza de memoria explícito, en comparación con la limpieza de memoria implícita de Finalize. Dispose puede invocarse incluso cuando existen otras instancias de objetos de memoria, mientras que Finalize solo puede invocarse después de que se destruye el último objeto de memoria.

Las reglas del método de eliminación son las siguientes:

  • Se utiliza para recursos no administrados que requieren una liberación inmediata después de su uso.
  • Si no se llama a Dispose, se debe implementar el método Finalize.
  • Después de llamar al método Dispose, se debe llamar al método GC.SuppressFinalize para evitar el método Finalize y evitar GC innecesario.
  • Las excepciones deben manejarse con cuidado si el método Dispose se invoca más de una vez. Si se eliminan los recursos, cualquier método de instancia puede lanzar ObjectDisposedException.
  • Un objeto con un método Dispose previamente llamado no se puede reutilizar.
  • Dispose se recomienda solo para la administración de objetos de recursos nativos y objetos del Modelo de objetos componentes (COM) expuestos a .NET Framework.
  • Es posible que Dispose no se invoque simultáneamente desde varios subprocesos, debido a resultados impredecibles.
  • Los tipos de valor no deben crearse como tipos desechables o con miembros de recursos no administrados.
  • Cuando se utilizan recursos no administrados, se considera una buena práctica aplicar la instrucción Using del código fuente, que invoca automáticamente el método Dispose del objeto después de completar el código del objeto.

Esta definición se escribió en el contexto de C #