Algo que no he podido resolver!!!

26/04/2005 - 16:12 por Carmelo Enrique Gonzalez | Informe spam
Hola amigos del foro!!!

Tengo un modulo en el cual tomo en picturebox una imagen la cual la grabare
en una base de datos de sqlserver, el problema se me esta presentando en que
si yo muestro la imagen en el picturebox cuando estoy haciendo este proceso

Dim fsFoto As FileStream

fsFoto = New FileStream(sRutaFoto, FileMode.Open)

me dice que el archivo esta siendo utilizado por otro proceso que puedo
hacer????

Si no la muestro en el picturebox si pasa y graba la imagen sin nungun
problema.



Gracias por su ayuda

Carmelo Gonzalez

Preguntas similare

Leer las respuestas

#1 LMCR
26/04/2005 - 21:58 | Informe spam
Saludos:

El problema es un bug en .NET Framework (desde la versión 1.0) que
parece que no van a corregir. Esta misma semana me he enfrentado a él y
espero, aprovechando el puente de cuatro días, mandar a los foros y al
sitio de soporte de Microsoft el "aviso" a ver si hacen algo.

Los artículos KB834457 y KB810109 comentan un problema similar, aunque
en el fondo es el mismo: la clase System.Drawing.Bitmap, encargada de
trabajar con imágenes, carga las imágenes (da igual cómo se haga) y las
"bloquea" en memoria, impidiendo realizar ninguna operación con ellas.

Así pues, la solución pasa por "duplicar" la imagen cargarda y
deshacernos de la primera. Un pequeño ejemplo en VB (que deberás ajustar
a tus necesidades, opr ejemplo, añadiendo control de errores y esas
cosas):

Public Function CargarImagen( ByVal nombre_fichero As String ) As
System.Drawing.Image
Dim original As New System.Drawing.Bitmap( nombre_fichero )
Dim valida As New System.Drawing.Bitmap( original, original.Size )
Call original.Dispose()
original = Nothing
Return valida
End Function 'CargarImagen

Tu problema es que el PictureBox ya realiza operaciones sobre la imagen
original de manera automática y fuera de tu control (como ajustar su
tamaño, transparencias, etc...) y, desde ese momento, .NET te eleva la
excepción correspondiente. Con la solución que te propongo solucionas tu
duda.


"Carmelo Enrique Gonzalez" escribió en el
mensaje news:%
Hola amigos del foro!!!

Tengo un modulo en el cual tomo en picturebox una imagen la cual la


grabare
en una base de datos de sqlserver, el problema se me esta presentando


en que
si yo muestro la imagen en el picturebox cuando estoy haciendo este


proceso

Dim fsFoto As FileStream

fsFoto = New FileStream(sRutaFoto, FileMode.Open)

me dice que el archivo esta siendo utilizado por otro proceso que


puedo
hacer????

Si no la muestro en el picturebox si pasa y graba la imagen sin nungun
problema.



Gracias por su ayuda

Carmelo Gonzalez



Respuesta Responder a este mensaje
#2 Tristan
11/05/2005 - 23:22 | Informe spam
Creo que estás realmente confundido. Tal y como ya he observado en otras
ocasiones tienes poco claro el concepto de lo que es un bug y lo que es una
característica de diseño, que por cierto en este caso es de buen diseño.

La solución que propones no es correcta. Obliga a guardar la imagen en
memoria, cuando es totalmente innecesario. Tal y como está diseñado en el
framework, el bitmap se obtiene del archivo en disco o cualquiera que sea su
origen solo cuando se necesita. Realizar un duplicado en memoria solo será
conveniente en el extremadamente poco común caso de que se necesite eliminar
el archivo, o bien cuando se requiera por motivos de rendimiento.

Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida