¿Qué se entiende por connection.Dispose()
en C#?¿Qué se entiende por conexión. Deshacer() en C#?
Respuesta
Una clase implementa IDisposable interface contiene un método llamado Dispose()
, donde se puede liberar recursos o hacer otra cosa.
Además, una declaración using
puede ayudar a llamar al método Dispose()
automáticamente.
using (SqlConnection connection = new SqlConnection(connStr))
{
//do something
}// it will automatically Dispose() here
¿Qué ocurre cuando se llama myClass.Dispose()
depende de lo que ha escrito en el método Dispose
. Por ejemplo:
public class MyClass : IDisposable
{
//since MyClass implements IDisposable, it must contain a Dispose() method otherwise will compile error
public void Dispose()
{
// do something
}
}
así que si quieres saber lo que ocurrió cuando se llama connection.Dispose()
, debe echar un vistazo al método de la clase de conexión Dispose()
(tal vez es un SqlConnection?). Si se trata de una biblioteca incorporada .NET (lo que significa que no puede obtener el código fuente fácilmente), puede usar una herramienta llamada Reflector
En general, se deshace de los recursos cuando ha terminado de usar el componente.
El método Dispose en un objeto SqlClientConnection forzará la conexión para cerrar.
Es un pattern común que se puede encontrar no solo en .Net sino también en Java.
MSDN debe proporcionar toda la documentación necesaria sobre la forma correcta de llamar a Dispose
así será quitar los recursos de la memoria? y qué ocurre con connection.Close() – selvaraj
El objeto permanecerá en la memoria hasta que se haya recogido basura –
por lo que según su respuesta Dispose se invoca a recursos gratuitos cuando haya terminado de usar el componente. ¿A qué te refieres con recursos gratuitos? – selvaraj
conn.Dispose() es invocar la función en código no gestionado.
De hecho, al programar, no necesita llamar a esta función, solo llame al conn.Close();
El método Dispose() elimina permanentemente cualquier recurso ((un) managed) de la memoria para la limpieza y el recurso ya no existe para ningún procesamiento posterior.
Ejemplo: -
void DataTest()
{
using(SqlConnection conn1 = new SqlConnection(...)) {
conn1.Open();
SqlCommand mycommand = new SqlCommand("Select * From someTable", conn1);
using(SqlDataReader myreader = mycommand.ExecuteReader()) {
if(myreader != null)
while(myreader.Read())
Console.WriteLine(myreader.GetValue(0).ToString() + ":" + myreader.GetTypeName(0));
}
mycommand.Dispose();
}
}
- 1. ¿Qué se entiende por inmutable?
- 2. ¿Qué se entiende por WS- *?
- 3. ¿Qué se entiende por metadatos en Android?
- 4. ¿Qué se entiende por deshabilitar las interrupciones?
- 5. ¿Qué se entiende por el término "Instrumentación"?
- 6. ¿Qué se entiende por .delegate = self?
- 7. ¿Qué se entiende por tipo parametrizado?
- 8. ¿Qué se entiende por clases en sí mismas son objetos?
- 9. ¿Qué se entiende por CoreData no es seguro para subprocesos?
- 10. ¿Qué se entiende por modo de enlace en WebSphere MQ?
- 11. ¿Qué se entiende por el término "pila web"?
- 12. ¿Qué se entiende por 'objeto de primera clase'?
- 13. ¿Qué se entiende por el término "objeto sucio"?
- 14. ¿Qué se entiende por autenticación de dos patas?
- 15. ¿Qué se entiende por "sustituciones que evitan la captura"?
- 16. ¿Qué se entiende por tipos dependientes de ruta de Scala?
- 17. ¿Por qué no hay forma de deshacer "usar" en C++?
- 18. ¿Qué se entiende por "falla" en la protección contra fallas rápidas de IIS?
- 19. ¿Qué se entiende por tamaño de archivo y tamaño de datos en MongoDB?
- 20. Lo que se entiende por 'MyType = Int => Boole'
- 21. ¿Cómo creo "deshacer" en C++?
- 22. ¿Por qué no hay deshacer/rehacer en Git?
- 23. ¿Qué se entiende por marco, lenguaje de programación y lenguaje de scripting?
- 24. ¿Qué se entiende por 'modificación de consultas' como un enfoque para implementar vistas?
- 25. ¿Qué se entiende por pruebas A/B de un sitio web?
- 26. ¿Por qué se requieren destructores en C++?
- 27. ¿Por qué se rechaza la conexión a localhost?
- 28. lo que se entiende por aplicación por defecto de una interfaz
- 29. ¿Por qué el host aborta la conexión?
- 30. No se puede usar Deshacer en TextChanged
¿qué está sucediendo realmente cuando llamamos al método dispose()? – selvaraj
@Saj ver mi edición. –
Al igual que una edición, usando (conexión SqlConnection = new SqlConnection (...)) {} se traduce en try { SqlConnection sqlConnection = new SqlConnection (...); } finalmente { sqlConnection.Dispose(); } –