DoNet.QueIdeas

Etiqueta: Recursos

Uso de nomenclatura Using

por José Jorge Márquez Gómez a abr.01, 2009, bajo General, Medio

Deciros que la nomenclatura using es muy útil usarla cuando usamos recursos que debemos liberar forzosamente (acceso a fichero, aperturas de registro en bd’s, manipulación de imágenes…etc) para no tener problemas despúes.

Como nomenclatura de visual studio es muy usada para el acceso a ficheros, pero es posible usarse con cualquier clase que implemente la interfaz IDisposable, asegurándonos que la clase usada en el estamento using liberará “SI o SI” (como dice un presidente de un club de futbol :P ) los recursos que esté usando, dé error en el bloque de código o no, ya que es el Garbage Collector del visual studio el que se encarga de llamar a el método dispose de la clase que implementa la interfaz.

Para este ejemplo usaremos el acceso a un fichero.

El ejemplo es sencillo, ya que lo único que debemos hacer es usar la nomenclatura de este modo:

Using fich As New FileStream("C:\pruebas.txt", FileMode.Open)
       'CODIGO A ESCRIBIR PARA MANEJAR EL FICHERO
End Using

De este modo nos estamos asegurando que  el fichero pruebas.txt será liberado cuando termine el bloque using, sin provocar problemas en posteriores accesos al fichero.

Hay casos, como por ejemplo, el acceso a datos que al declarar el bloque nos obliga a abrir dicha conexión dentro del bloque, con esto quiero decir, que no por crear el bloque using ya damos por hecho que el recurso se abre y se cerrará solo (esto último sí es cierto). Lo que damos por hecho es que en el caso del ejemplo anterior si se abrirá el archivo porque la clase FileStream en su constructor ya abre el recurso, pero en el caso de una conexion de datos el constructor de dicho conector de datos no abre la conexion en su constructor, con lo cual debemos abrirlo una vez asignado el recurso.

Ejemplo:

'ESTA DECLARACIÓN NO IMPLICA LA APERTURA DE LA CONEXIÓN SOLO LA INICIALIZACION DEL OBJETO
Using conn As New SqlConnection("CadenaConexion")
           conn.Open() 'Esto si nos asegura su apertura, ya el bloque using se encargará de liberarlo (cerrar la conexión)
          'CODIGO A ESCRIBIR
End Using

Resumiendo,

Lo que si nos aseguramos con un bloque using es la liberación de recursos, pero no la apertura de esos recursos, esto dependerá de la clase usada en el using.

Deja un comentario :, , , más...

¿Buscas algo?

Utilice el formulario siguiente para buscar en el sitio:

¿Todavía no ha encontrado lo que estás buscando? Deja un comentario o contacta con nosotros para encargarnos.

�Visite nuestros amigos!

Unos sitios muy recomendables...

Archivo

Todas las entradas, cronológicamente...