none
System.IO.IOException: 'El proceso no puede obtener acceso al archivo porque está siendo utilizado en otro proceso.'

    Pregunta

  • Tengo problemas para copiar una imagen que tengo en una carpeta hacia otra.
    Cuando escojo la imagen del `openFileDialog1` y quiero copiarla a otra dirección me sale la excepción:

    > System.IO.IOException: 'El proceso no puede obtener acceso al archivo 'E:\Raul Humberto Juliao Colina\Pictures\812c0a8c-7b25-412c-abcd-3c2d2cad7ebb.jpg' porque está siendo utilizado en otro proceso.'

    Esta es la sección de código que hace eso.

                 
      this.openFileDialog1.InitialDirectory = @"E:\Raul Humberto Juliao Colina\Pictures";                this.openFileDialog1.RestoreDirectory = true;                this.openFileDialog1.Title = "Browse Images Files";                this.openFileDialog1.Filter = "Images (*.BMP;*.JPG;*.GIF,*.PNG,*.TIFF)|*.BMP;*.JPG;*.GIF;*.PNG;*.TIFF";                this.openFileDialog1.Multiselect = true;                DialogResult dr = this.openFileDialog1.ShowDialog();                    String folder = "E:\\Images";                String destFile;                foreach(String img in openFileDialog1.FileNames)                {                    if (System.IO.Directory.Exists(folder) == true)                    {                                                destFile = System.IO.Path.Combine(folder, img);                        System.IO.File.Copy(img, destFile, true);                    }                }

    jueves, 18 de abril de 2019 4:37

Respuestas

  • hola

    El problema es que el OpenFileDialog esta bloquenado el acceso a los archivos que se seleciconan por eso si declaras este dentro del un bloque using libera la seleccion para continuar trabajarndo con la lista

    string[] fileNames;
    
    using(openFileDialog openFileDialog1 = new openFileDialog())
    {
        openFileDialog1.InitialDirectory = @"E:\Raul Humberto Juliao Colina\Pictures";
        openFileDialog1.RestoreDirectory = true;
        openFileDialog1.Title = "Browse Images Files";
        openFileDialog1.Filter = "Images (*.BMP;*.JPG;*.GIF,*.PNG,*.TIFF)|*.BMP;*.JPG;*.GIF;*.PNG;*.TIFF";
        openFileDialog1.Multiselect = true;
    
        if(openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            fileNames = openFileDialog1.FileNames
        }
    }
    
    string folder = "E:\\Images";
    if (Directory.Exists(folder))
    {
        //aqui informas que la carpeta no existe o la creas
    }
    
    foreach(string img in fileNames)
    {
        string destFile = Path.Combine(folder, img);
        File.Copy(img, destFile, true);
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta eRiver1 jueves, 18 de abril de 2019 14:56
    • Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 16:56
    jueves, 18 de abril de 2019 4:58