sábado, 7 de septiembre de 2013

Archivo de imagen se bloquea cuando es establecida la propiedad PictureBox

Un problema común en el Basic es cuando deseamos visualizar una imagen en un PictureBox, pero al mismo tiempo esta imagen se debe actualizar (es decir sobrescribir) cada cierto intervalo de tiempo.
Usualmente usaríamos el siguiente codigo:

PictureBox.Image = Image.FromFile("C:\Users\Images\Imagen.jpg")

Sin embargo al usar este código nos encontramos con un conflicto, y como lo dije lineas arriba, el principal conflicto es que en el tiempo de ejecución de nuestro programa, no podemos hacer uso del archivo (No podemos actualizarlo ni suprimirlo) debido a que se encuentra en uso por el picturebox, es decir, es como si este item abriera un visor de windows y estuviera visualizándose ahí, solo que en este caso lo vemos mediante nuestro picturebox.

Para evitar este problema, tenemos que utilizar el objeto FileStream como sigue:

Dim fs As System.IO.FileStream
fs = New System.IO.FileStream("C:\Users\Images\Imagen.jpg", 
     IO.FileMode.Open, IO.FileAccess.Read)
PictureBox.Image = System.Drawing.Image.FromStream(fs)
fs.Close()
De esta manera estaríamos solucionando el conflicto mencionado anteriormente, y ahora la imagen podrá ser utilizada por terceros mientras estamos ejecutando nuestro visor

No hay comentarios:

Publicar un comentario