Devo chamar Close () ou Dispose () para objetos de fluxo?
Classes comoStream
, StreamReader
, StreamWriter
etc implementaIDisposable
interface. Isso significa que podemos chamarDispose()
método em objetos dessas classes. Eles também definiram umpublic
método chamadoClose()
. Agora isso me confunde, sobre o que devo chamar quando terminar os objetos? E se eu ligar para os dois?
Meu código atual é este:
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
using (StreamWriter writer = new StreamWriter(filename))
{
int chunkSize = 1024;
while (!reader.EndOfStream)
{
char[] buffer = new char[chunkSize];
int count = reader.Read(buffer, 0, chunkSize);
if (count != 0)
{
writer.Write(buffer, 0, count);
}
}
writer.Close();
}
reader.Close();
}
}
Como você vê, eu escreviusing()
onstruções @, que chamam automaticamenteDispose()
método em cada objeto. Mas eu também ligo paraClose()
métodos. Está certo
Sugira-me as melhores práticas ao usar objetos de fluxo. : -)
exemplo @MSDN não usausing()
constrói e chameClose()
método:
Isso é bom