Sobes.tech
Junior — Middle

¿Puedes explicar qué se entiende por patrón Dispose en programación?

sobes.tech AI

Respuesta de la IA

El patrón Dispose en programación, especialmente en C#, se utiliza para liberar correctamente recursos no gestionados (por ejemplo, descriptores de archivos, conexiones a bases de datos, sockets), que no son controlados por el recolector de basura.

En C#, para ello se implementa la interfaz IDisposable, que contiene el método Dispose(). La llamada a este método libera los recursos de manera explícita cuando el objeto ya no es necesario.

Ejemplo de uso:

class ResourceHolder : IDisposable
{
    private bool disposed = false;
    private IntPtr unmanagedResource; // ejemplo de recurso no gestionado

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this); // evita la llamada al finalizador
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // Liberar recursos gestionados
            }
            // Liberar recursos no gestionados
            CloseHandle(unmanagedResource);
            unmanagedResource = IntPtr.Zero;
            disposed = true;
        }
    }

    ~ResourceHolder()
    {
        Dispose(false);
    }
}

De esta forma, el patrón Dispose ayuda a controlar el momento de liberación de recursos y previene fugas de memoria o bloqueos.