.NET Framework Recursos no gestionados


Ejemplo

Cuando hablamos sobre el GC y el "montón", realmente estamos hablando de lo que se llama el montón administrado . Los objetos en el montón administrado pueden acceder a recursos que no están en el montón administrado, por ejemplo, al escribir o leer desde un archivo. Se puede producir un comportamiento inesperado cuando se abre un archivo para su lectura y luego se produce una excepción, lo que impide que el identificador del archivo se cierre como lo haría normalmente. Por esta razón, .NET requiere que los recursos no administrados implementen la interfaz IDisposable . Esta interfaz tiene un solo método llamado Dispose sin parámetros:

public interface IDisposable
{
    Dispose();
} 

Cuando maneje recursos no administrados, debe asegurarse de que estén correctamente dispuestos. Puede hacerlo llamando explícitamente a Dispose() en un bloque finally o con una instrucción using .

StreamReader sr; 
string textFromFile;
string filename = "SomeFile.txt";
try 
{
    sr = new StreamReader(filename);
    textFromFile = sr.ReadToEnd();
}
finally
{
    if (sr != null) sr.Dispose();
}

o

string textFromFile;
string filename = "SomeFile.txt";

using (StreamReader sr = new Streamreader(filename))
{
    textFromFile = sr.ReadToEnd();
}

Este último es el método preferido y se expande automáticamente al primero durante la compilación.