Varía, Stream
de forma predeterminada no llama a Flush()
en el método Dispose
con algunas excepciones como FileStream
. La razón de esto es que algunos objetos de transmisión no necesitan la llamada al Flush
ya que no usan un búfer. Algunos, como MemoryStream
, anulan explícitamente el método para garantizar que no se realice ninguna acción (por lo que no es operativo).
Esto significa que si prefiere no tener la llamada adicional allí, entonces debe verificar si la subclase Stream
que está implementa implementa la llamada en el método Dispose
y si es necesario o no.
Independientemente, puede ser una buena idea para llamar a que de todos modos sólo para facilitar la lectura - similar a la forma en que algunas personas llaman Close()
al final de sus declaraciones utilizando:
using (FileStream fS = new FileStream(params))
using (CryptoStream cS = new CryptoStream(params))
using (BinaryWriter bW = new BinaryWriter(params))
{
doStuff();
//from here it's just readability/assurance that things are properly flushed.
bW.Flush();
bW.Close();
cS.Flush();
cS.Close();
fS.Flush();
fS.Close();
}
fin de utilizar por los pelos? Solo sé que descarta la transmisión, y al final siempre lo llamo metodo cerrado. –
Eso no es necesario, Eliminar siempre cerrará la transmisión y Cerrar arrojará primero la corriente. – nos
@FelixCzylwik: si el final del uso no era llamar a Close, tendrías toneladas de streams abiertos y abrir SQLConnections por ahí ...: D –