Articles of idisposable

¿Cuál es la forma correcta de agregar seguridad de subprocesos a un objeto IDisposable?

Imagine una implementación de la interfaz IDisposable , que tiene algunos métodos públicos. Si una instancia de ese tipo se comparte entre varios subprocesos y uno de los subprocesos puede eliminarlo, ¿cuál es la mejor manera de asegurarse de que los otros subprocesos no intenten trabajar con la instancia después de eliminarse? En la mayoría […]

Desechar en artículos desechables nesteds?

Quería saber si hay alguna convención con respecto a la eliminación de artículos desechables nesteds dentro de otro artículo desechable (en una propiedad / campo público, no como miembros privados). Por ejemplo, un DataSet contiene DataTable (s) y un SqlCommand contiene un SqlConnection. Lo obvio sería que una clase disponga de todos los artículos desechables […]

Pregunta sobre IDisposable

Mi pregunta es ¿por qué necesito IDisposable? Tengo una clase que consume algunos recursos que necesitan ser liberados. Tengo dos opciones Sin IDisposable class SomeUtilityClass { public Stop() { // free resources } } Con IDisposable class SomeUtilityClass, IDisposable { public void Dispose() { // free resources } } Entonces, ¿por qué necesito IDisposable aquí? […]

Usando usar para desechar objetos nesteds

Si tengo código con objetos nesteds como este, necesito usar las declaraciones anidadas para asegurarme de que tanto los objetos SQLCommand como SQLConnection se eliminen correctamente como se muestra a continuación o si el código que crea una instancia de SQLCommand está dentro de statement de uso exterior. using (var conn = new SqlConnection(sqlConnString)) { […]

No entiendo muy bien el funcionamiento del uso de objetos desechables.

Hice una pregunta con respecto a devolver un objeto Desechable ( IDisposable ) desde una función , pero pensé que me gustaría confundir la discusión si planteaba esta pregunta allí. He creado algunos ejemplos de código: class UsingTest { public class Disposable : IDisposable { public void Dispose() { var i = 0; i++; } […]

El uso principal de la interfaz IDisposable

Posible duplicado: Uso adecuado de la interfaz IDisposable. El artículo de “Interfaz IDisponible” dice: El uso principal de esta interfaz es liberar recursos no administrados. ¿Por qué? ¿Por qué solo no gestionado? Toda mi vida pensé que su uso principal es liberar CUALQUIER recurso: administrado (conexiones a DBs, proxies de servicios, etc.) y no administrado […]

Uso de (IDisposable obj = new…) en C # para escribir bloques de código en secuencia (por ejemplo, XML)

Comencé a usar clases que implementan IDisposable para escribir bloques en secuencias, con la instrucción using. Esto es útil para mantener un agrupamiento correcto y evitar perder o colocar incorrectamente las partes de inicio / finalización. Básicamente, el constructor escribe el inicio de un bloque (por ejemplo, abriendo la etiqueta XML), Dispose () el final […]

Singleton con finalizador pero no IDisposable

Esto es lo que entiendo sobre IDisposable y finalizadores de “CLR via C #”, “Effective C #” y otros recursos: IDisposable es para limpiar de manera determinista los recursos administrados y no administrados. Las clases que son responsables de los recursos no administrados (por ejemplo, los manejadores de archivos) deben implementar IDisposable y proporcionar un […]

¿Abusar de IDisposible beneficiarse de las declaraciones de “uso” se considera perjudicial?

El propósito de la interfaz IDisposable es liberar recursos no administrados de manera ordenada. Va de la mano con la palabra clave using que define un scope después del final del cual se dispone el recurso en cuestión. Debido a que este meachnism es tan nítido, he tenido la tentación repetida de que las clases […]

¿Por qué disponer StreamReader hace que una secuencia sea ilegible?

Necesito leer una secuencia dos veces, de principio a fin. Pero el siguiente código lanza una ObjectDisposedException: Cannot access a closed file excepción de ObjectDisposedException: Cannot access a closed file . string fileToReadPath = @””; using (FileStream fs = new FileStream(fileToReadPath, FileMode.Open)) { using (StreamReader reader = new StreamReader(fs)) { string text = reader.ReadToEnd(); Console.WriteLine(text); […]