none
Error al copiar imagen en IsolatedStorage“ Operation not permitted on IsolatedStorageFileStream.” RRS feed

  • Pregunta

  • Buenas!

    Tengo un problema al copiar las imágenes en el IsolatedStorage y descargadas desde skydrive.

    La primera vez me las descarga y copia bien en la carpeta, sin errores. Pero si intento una segunda vez, peta.

    ERROR: Exeception “ Operation not permitted on IsolatedStorageFileStream.”

    Lo que está en negrita es dónde salta el error:

    CÓDIGO

    void client_DownloadImatgesCompleted(object sender, LiveDownloadCompletedEventArgs e)
            {
                if (e.Error == null)
                {
                    string _nomPic = e.UserState.ToString();
                    Stream stream = e.Result; //Need to write this into IS              

                    try
                    {
                        using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
                        {
                            if (!myIsolatedStorage.DirectoryExists("pic"))
                            {
                                myIsolatedStorage.CreateDirectory("pic");
                            }

                            using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("pic\\" + _nomPic, FileMode.Create ))
                            {
                                stream.CopyTo(fileStream);
                                cantImatges_progreso_down += 1;
                            }
                        }

                        infoTextBlock.Text = AppResources.strFile + cantImatges_progreso_down.ToString() + AppResources.skyOf + contenidoSkyPic.Count().ToString() + " " + AppResources.skyDownload;

                    }
                    catch (Exception exc)
                    {
                        MessageBox.Show (exc.ToString ());
                        infoTextBlock.Text = AppResources.skyErrDownFile + _nomPic;
                    }
                    finally
                    {
                        stream.Close();
                    }


                }
                else
                {                
                    MessageBox.Show(AppResources.skyRestorePicFail);
                }

                client.DownloadCompleted -= client_DownloadImatgesCompleted;
            }

    Seguro que me peta por una chorrada pero es que no lo veo...

                                              

    Saludos / Regards

    miércoles, 26 de septiembre de 2012 14:37

Todas las respuestas

  • Debe ser algo por la asincronia, es decir, al usar using no necesitas cerrar el archivo, se cierra solo al terminar el bloque.

    Cuando te refieres a segunda vez que pas:

    1 Bajas una unica foto, cierras la app, y bajas otra foto Excepcion

    2 Bajas una foto, se guarda, bajas otra foto Excepcion

    3 Bajas un varias fotos, primera Ok segunda Excepcion

    yo creo que si es el caso 3 deberias ver lo que trea e.UserState, parece que intentea acceder al mismo archivo, cuando aun no ha terminado el guardado.

    Esepro ayudarte.

    Saludos

    • Marcado como respuesta yaeko.m jueves, 27 de septiembre de 2012 9:37
    • Desmarcado como respuesta yaeko.m jueves, 27 de septiembre de 2012 16:17
    miércoles, 26 de septiembre de 2012 16:33
  • Buenas!

    pues con lo que me has respondido me has hecho ver que el error no estaba ahí en la "descarga".

    Así que tenía pinta de ser lo que comentabas:

    "(..)parece que intentea acceder al mismo archivo, cuando aun no ha terminado el guardado.(..)"

    Por lo que me he dado cuenta de que el error pasa cuando vuelvo a descargar ficheros después de haberlos subido a skydrive.

    Origen del error: en el evento FileImatges_UploadCompleted (que se lanza cada vez que se termina de subir un fichero ) tenía que haber puesto el filestream.dispose() y no lo puse.

    Resumiendo: Un fallo super tonto, ya me vale.


    Saludos / Regards

    jueves, 27 de septiembre de 2012 9:37
  • oops. me precipité....sigue dando error...

    :(                       

    Saludos / Regards

    jueves, 27 de septiembre de 2012 16:17
  • mismo error?
    viernes, 28 de septiembre de 2012 0:50
  • Hola:

    sip, es el mismo error. Y encima de forma aleatoria para hacerlo + complicado.

    Por ejemplo, ahora antes de sobreescrbir la imagen hago:

     if (myIsolatedStorage.FileExists("pic\\" + _nomPic))
    {
             myIsolatedStorage.DeleteFile("pic\\" + _nomPic);
    }

    y también da error esta instrucción:

    myIsolatedStorage.DeleteFile("pic\\" + _nomPic);

    ¿permisos, en uso, ...?


    Saludos / Regards

    viernes, 28 de septiembre de 2012 14:48