Liberar recursos de memoria con Garbage Collector en c# .net

Liberar recursos con Dispose() al  en las clases que se instancian:

La siguiente clase Empaque contiene un metodo llamado dispose que permite liberar recursos no administrados. contiene un constructor y in destructor para poder crear la instancia y leberar el recurso.

public class Empaque

{

// Puntero a un recurso externo no administrado.

private IntPtr handle;

// Variable que indica si el metodo Dispose ha sido llamado.

private bool disposed = false;

// constructor de la clase

public Empaque()

{

}

// destructor de clase

~Empaque()

{

Dispose(true);

}

/// <summary>

/// Este metodo se encarga de limpiar y destruir el objeto entidad

/// </summary>

public void Dispose()

{

Dispose(true);

GC.SuppressFinalize(this);

}

/// <summary>

/// Este m‚todo se encarga de limpiar y destruir el objeto entidad

/// </summary>

/// <param name="disposing">Variable Booleana que indica si es TRUE que el metodo fue llamado directa o indirectamente por el usuario

///, en cambio, si es FALSE es porque fue llamado por el garbage collector</param>

/// </summary>

protected virtual void Dispose(bool disposing)

{

if(!this.disposed)

{

// Libera los recursos no administrados

// solo si este codigo es ejecutado.

CloseHandle(handle);

handle = IntPtr.Zero;

}

disposed = true;

}

//Este método sirve para limpiar los recursos no administrados

[System.Runtime.InteropServices.DllImport("Kernel32")]

private extern static Boolean CloseHandle(IntPtr handle);

}

Este método podría encontrarse en la capa de presentación en un formulario Windows o Web que utilice la clase Empaque.

private

void MetodoXY()

{

//craamos la instancia de la clase

Empaque objEmpaque = new Empaque();

try

{

//aqui va el código

}

catch (Exception ex)

{

throw new Exception(ex.Message);

}

finally

{

//liberamos los recursos realizando el Dispose() en la clase objEmpaque

objEmpaque.Dispose();

}

}

 

About omaracostacasas

ING SOFTWARE
This entry was posted in Microsoft .NET. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s