Il primo campione è di breve portata di mano per:
TextReader readLogs = File.OpenText("C:\\FlashAuto\\Temp\\log.txt");
try
{
// My stuff
}
finally
{
if (readLogs != null)
{
((IDisposable)readLogs).Dispose();
}
}
La sua non è che il suo più veloce, la sua che readLogs
verrà pulito, anche se un'eccezione occurrs che non accadrà nel secondo esempio.
Vedere using Statement (C# Reference) per ulteriori informazioni.
Non c'è bisogno di chiamare sia Close
e Dispose
, internamente il metodo Close
fa lo stesso lavoro come metodo Dispose
(il suo solo rinominato perché gli sviluppatori sono abituati ad avere un metodo chiamato Close
).
Aggiornamento: Non v'è alcuna differenza tra chiamare File.OpenText
e new StreamReader
- internamente File.OpenText
solo crea e restituisce una nuova istanza di StreamReader
.
In realtà sto facendo alcuni elementi di registrazione dopo ogni 10 secondi nel thread dell'interfaccia utente. Ogni volta che legge il log e viene visualizzato in una casella di testo multilinea, viene presa una grande quantità di memoria. Ma se aggiorno la casella di testo senza leggere il file utilizzando un messaggio di stato del mio, non c'è alcun cambiamento nella memoria. – Rohan
@musefan la formattazione delle quote è stata deliberata, poiché si tratta di citazioni dalle specifiche. – CodesInChaos
Abbastanza corretto, probabilmente dovresti aggiungere dei riferimenti al momento della pubblicazione la prossima volta, però, evita la confusione per i lettori innocenti;) – musefan