.NET Framework Risorse non gestite


Esempio

Quando parliamo di GC e di "heap", stiamo parlando di ciò che viene chiamato heap gestito . Gli oggetti nell'heap gestito possono accedere alle risorse non nell'heap gestito, ad esempio, durante la scrittura o la lettura da un file. Un comportamento imprevisto può verificarsi quando, un file viene aperto per la lettura e quindi si verifica un'eccezione, impedendo la chiusura dell'handle del file normalmente. Per questo motivo, .NET richiede che le risorse non gestite implementino l'interfaccia IDisposable . Questa interfaccia ha un unico metodo chiamato Dispose senza parametri:

public interface IDisposable
{
    Dispose();
} 

Quando si gestiscono risorse non gestite, è necessario assicurarsi che siano correttamente smaltite. È possibile farlo chiamando esplicitamente Dispose() in un blocco finally o con un'istruzione 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();
}

Quest'ultimo è il metodo preferito e viene automaticamente esteso al primo durante la compilazione.