Nota: He leído las dos preguntas siguientes ya:Comprensión arroyos y su vida (Flush, botar, Close)
Can you explain the concept of streams?
estoy de codificación en C#
- En casi todos los ejemplos de código que usan flujos, casi siempre se llaman .Dispose(), .Flush(), .Close().
- En el concepto de transmisión, ¿qué logra?
- Si no dispongo de una secuencia que guardé en una variable, ¿se está filtrando mi aplicación en alguna parte?
- ¿Por qué tengo que llamar a alguna de estas funciones? He visto ejemplos de código que no hacen esto y todavía hacer el trabajo (sin rotura aparente )
Actualmente estoy construyendo una clase en mi aplicación que contiene un método primaria (deja llaman GetStream()
) que devuelve una corriente a través de myWebRequest.GetResponse().GetResponseStream()
El método principal GetStream()
devuelve un objeto Stream
que se puede utilizar para cualquier operación que requiere una corriente (StreamReader, Bitmap() etc.).
¿Hay alguna manera de hacer que la transmisión se elimine automáticamente después de su último uso (¿se recolectó basura?) Sin forzar a nadie que llame al .GetStream()
a deshacerse de ella manualmente?
Como probablemente pueda decir, mis preguntas son vagas y generales. Mi comprensión de las transmisiones no es sólida, por lo que cualquier enlace a artículos útiles que ofrezcan una mirada más profunda a las transmisiones que una pregunta de SO puede ofrecer sería apreciado.
Finalmente debe ser: 'if (stream is IDisposable) ((IDisposable) stream).Dispose(); – Gonzalo
Es un error del compilador utilizar 'using' en una variable que no se sabe que es IDisposable. Sin embargo, técnicamente debería ser: if (stream! = Null) stream.Dispose(); –
En muchos casos, es una buena idea cerrar explícitamente una secuencia, incluso si también se llama a 'Dispose'. Cerrar una secuencia puede requerir la realización de acciones que no se puede garantizar que tengan éxito; las implementaciones de 'Close' arrojarán generalmente una excepción cuando tales problemas ocurran, mientras que algunas implementaciones' Dispose' pueden sofocar tales excepciones (tragarse tales excepciones es malo, pero permitirles propagarse fuera de 'Dispose' a menudo golpeará una excepción previa, que también es malo; las implementaciones difieren en cuanto a qué mal se considera menor). – supercat