2010-07-17 13 views
7

Sto costruendo un'applicazione Windows Phone 7 che utilizza l'archiviazione isolata. Il codice funziona la maggior parte del tempo, ma continuo a ricevere in modo casuale IsolatedStorageExceptions:Errori di isolamento isolati

{"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) 

Il file esiste. Metto tutti i miei usi di IsolatedStorage all'interno usando i blocchi quindi non dovrei avere il file aperto ovunque.

Cosa potrebbe causare questo?

Come posso ottenere maggiori dettagli sulla causa dell'eccezione?

risposta

0

Non si deve dimenticare che il WP7 è ancora in versione Beta (hai aggiornato dalla versione CTP alla versione Beta?).

Considerare la creazione di un'applicazione molto semplice che manipola lo spazio di archiviazione isolato nel modo in cui l'applicazione principale è per vedere se è possibile creare un piccolo Repo del problema. Fatto ciò, inviarlo a Microsoft in modo che possano dargli un'occhiata.

+0

Sì, sono aggiornato alla versione beta. Lo farò come ultima risorsa. Sicuramente c'è un modo per ottenere maggiori dettagli sull'eccezione. – chief7

+0

@ Chief7: il debugger si ferma sulla linea in errore quando succede? – AnthonyWJones

+0

No, ma posso aggiungerne uno. – chief7

2

Vorrei verificare in particolare che tutti i lettori e scrittori siano stati chiusi a qualsiasi cosa all'interno del file che si sta tentando di eliminare. Non sto dicendo che lo risolverà sicuramente, ma piuttosto che non essere in grado di eliminare i file che esistono tendono a essere causati da file aperti.

7

Gli attuali blocchi non sono garantiti per lo svuotamento/chiusura di flussi in WP7.

Chiudi tutti i file/flussi in modo esplicito finché l'SDK non raggiunge il punto in cui ci si può fidare effettivamente! :)

+0

Davvero? Questo spiega così tanto! E ora devo andare, perché ho un numero di flussi da chiudere. Dimmi che posso fidarmi di Close per svuotare il flusso? –

+0

@Peter Wone: Close è esplicito, quindi puoi fidarti che faccia * quello che dice sullo stagno *. L'uso di blocchi chiude implicitamente le connessioni, di solito, ma l'oggetto deve supportarlo. Ricorda che questa è una vecchia risposta: non appena qualcuno conferma che è stato corretto, aggiungi un commento qui! –

0

Ho affrontato lo stesso problema.

Ho controllato attentamente e ho trovato un posto dove non ho chiuso il FileStream. La chiusura ha risolto il problema per me.

Problemi correlati