none
Eliminar un archivo para crear uno nuevo con el mismo nombre RRS feed

  • Pregunta

  • Buenos Días!

    Cargo una imagen en un picturebox1 contenido dentro del panel a capturar, el usuario la desplaza dentro del mismo para recortar la imagen, como si fuera una fotografía de DNI (de hay que el tamaño sea el panel), copio lo que es visible en el recuadro del panel en otro picturebox2 y a continuación debo guardar la imagen creada en este segundo picturebox en una archivo que debe tener el mismo nombre del que ya existe, para ello intento eliminar el archivo existente y me salta el siguiente error:

    System.IO.IOException: El proceso no puede obtener acceso al archivo !C:\Support_AMF20\Pg38.jpg", porque está siendo utilizado en otro proceso"

    La carpeta contenedora no tiene restricciones!.

    A continuación cuelgo el fragmento de mi código, por si estoy haciendo algo mal

     ' Asignamos la imagen al PictureBox
                picG.Image = bm
                '
                'Nombre del archivo y cierre del anterior
                Dim Nomfile As String = ""
                If ctrlP.Name = "Panel1" Then
                    'Logo página Superior
                    Nomfile = "Pg" & txCódigo.Text & ".jpg"
                ElseIf ctrlP.Name = "Panel2" Then
                    'Logo página inferior
                    Nomfile = "Pq" & txCódigo.Text & ".jpg"
                ElseIf ctrlP.Name = "Panel3" Then
                    'Logo portada
                    Nomfile = "Por" & txCódigo.Text & ".jpg"
                End If
                '
                'si el nombre del archivo existe lo elimina (Imagen anterior)
                If FilaExiste(rutaLogo & "\" & Nomfile) = True Then
                    Try
                        System.IO.File.Delete(rutaLogo & "\" & Nomfile) '-------------el error--------------------
                    Catch ex As Exception
                        MsgBox(ex.ToString)
                        Return
                    End Try
                End If
                '
                'Guarda la nueva imagen en disco
                picG.Image.Save(rutaLogo & Nomfile, ImageFormat.Jpeg)

    domingo, 26 de abril de 2020 8:44

Respuestas

  • No se ve dónde estás cargando el fichero. Haces esto:

    picG.Image = bm

    donde presumiblemente bm es un bitmap que antes has leído desde el fichero en algún otro sitio del programa. Esa es la parte del programa que hay que revisar. Posiblemente se te haya olvidado hacer "Dispose" del objeto que hayas usado para leer el fichero, y por eso el fichero está todavía en uso y no se puede borrar.

    • Marcado como respuesta Angelnovato domingo, 26 de abril de 2020 15:26
    domingo, 26 de abril de 2020 9:52

Todas las respuestas

  • No se ve dónde estás cargando el fichero. Haces esto:

    picG.Image = bm

    donde presumiblemente bm es un bitmap que antes has leído desde el fichero en algún otro sitio del programa. Esa es la parte del programa que hay que revisar. Posiblemente se te haya olvidado hacer "Dispose" del objeto que hayas usado para leer el fichero, y por eso el fichero está todavía en uso y no se puede borrar.

    • Marcado como respuesta Angelnovato domingo, 26 de abril de 2020 15:26
    domingo, 26 de abril de 2020 9:52
  • Gracias!, es correcto.

    costumbre del VB6, había puesto image = Nothing en vez de Image.dispose.

    Muchas gracias. Saludos

    domingo, 26 de abril de 2020 15:26
  • Hola Angelnovato

     

     

    Gracias por levantar tu consulta en los foros de MSDN. Cerraremos el Hilo, por ende si tiene alguna otra consulta por favor genera otra consulta para que la comunidad de foros te pueda asesorar.

     

    Siempre es un placer atender tus consultas!

     

    Gracias por usar los foros de MSDN.

     

    Oscar Navarro

    lunes, 27 de abril de 2020 13:46
    Moderador