2010-07-17 11 views
7

Estoy creando una aplicación para Windows Phone 7 que usa almacenamiento aislado. El código funciona la mayor parte del tiempo, pero me siguen dando IsolatedStorageExceptions al azar:Errores aislados de almacenamiento

{"An error occurred while accessing IsolatedStorage."} 

There are no further details about the reason for the exception. Here is the stack trace: 

    at System.IO.IsolatedStorage.IsolatedStorageFile.DeleteFile(String file) 
    at MyApp.Core.Data.WindowsPhoneFileRepository.DeleteFile(String name) 
    at MyApp.Core.Domain.ThingService.SaveThing(Thing Thing) 
    at MyApp.Core.Domain.TrackedThingService.PersistThingLocally(TrackedThing Thing) 
    at MyApp.Ui.ViewModels.TrackViewModel.<.ctor>b__3(Thing Thing) 
    at GalaSoft.MvvmLight.Command.RelayCommand`1.Execute(Object parameter) 
    at GalaSoft.MvvmLight.Command.EventToCommand.Invoke(Object parameter) 
    at System.Windows.Interactivity.TriggerAction.CallInvoke(Object parameter) 
    at System.Windows.Interactivity.TriggerBase.InvokeActions(Object parameter) 
    at System.Windows.Interactivity.EventTriggerBase.OnEvent(EventArgs eventArgs) 
    at System.Windows.Interactivity.EventTriggerBase.OnEventImpl(Object sender, EventArgs eventArgs) 
    at System.Windows.Controls.Primitives.ButtonBase.OnClick() 
    at System.Windows.Controls.Button.OnClick() 
    at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e) 
    at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e) 
    at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName) 

existe el archivo. Coloco todos mis usos de IsolatedStorage dentro usando bloques, así que no debería tener el archivo abierto en ninguna parte.

¿Qué podría estar causando esto?

¿Cómo puedo obtener más detalles sobre la causa de la excepción?

Respuesta

0

No debe pasarse por alto que el WP7 todavía está en Beta (ha actualizado desde el CTP a la versión Beta ¿verdad?).

Considere la posibilidad de crear una aplicación muy simple que manipule el almacenamiento aislado de la manera en que lo hace su aplicación principal para ver si puede crear un Repo pequeño del problema. Una vez hecho esto, envíelo a Microsoft para que puedan echarle un vistazo.

+0

Sí, he actualizado a la versión beta. Haré esto como último recurso. Seguramente hay alguna forma de obtener más detalles sobre la excepción. – chief7

+0

@ Chief7: ¿Tiene el depurador detenido en la línea ofensiva cuando sucede? – AnthonyWJones

+0

No, pero puedo agregar uno. – chief7

2

Verifique específicamente para asegurarse de que ha cerrado todos los lectores y escritores a cualquier cosa dentro del archivo que está tratando de eliminar. No digo que definitivamente lo arregle, sino que no pueda eliminar archivos que existen tienden a ser causados ​​por archivos abiertos.

7

En la actualidad, no se garantiza que los bloques enjuaguen/cierren las corrientes en WP7.

¡Cierre todos los archivos/secuencias de forma explícita hasta que el SDK llegue al punto en el que realmente pueda confiar! :)

+0

¿De verdad? Eso explica mucho! Y ahora debo irme, ya que tengo varias secuencias para cerrar. Dime que puedo confiar en Cerrar para enjuagar la corriente? –

+0

@Peter Wone: Close es explícito, por lo que puede confiar en que haga * lo que dice en la lata *. El uso de bloques implícitamente cierra las conexiones, por lo general, pero el objeto debe soportarlo. Recuerde que esta es una respuesta antigua: tan pronto como alguien confirme que se ha solucionado, agregue un comentario aquí. –

0

Me enfrenté al mismo problema.

Comprobé cuidadosamente y encontré un lugar donde no cerré FileStream. Cerrarlo resolvió el problema para mí.

Cuestiones relacionadas