2010-11-20 13 views
2

Windows Phone 7 App Le but de l'application est une simple liste de tâches. J'ai une classe 'toditem' j'ajoute ces objets à l'objet Items.silverlight, Enregistrer la charge, IsolatedStorageFile et IsolatedStorageFileStream. Exceptions

il me semble que je fais quelque chose de vraiment compliqué et très probablement pas de code propre ou bien

Mais j'ai quelques problèmes graves « IsolatedStorageFile »

public class ToDoItem 
    { 
     public string ToDoName { get; set; } // Add controle's enz. 
     public string ToDoDescription { get; set; } 
     internal Priority PriortiySelection { get; set; } 
... 
} 

Articles de classe (basiquement une enveloppe CLAS donc je peux plus accéder il)

public class Items 
    { 
     public static List<ToDoItem> Itemslist = new List<ToDoItem>(); 
     public static List<ToDoItem> GetList() 

     static methods here.. 
    } 

Le code renvoie Belows les exceptions suivantes:

"Tentative d'accès à la méthode a échoué: System.Io.streamreader..ctor (System.String)"

et ensuite je reçois

Opération non autorisée sur IsolatedStorageFileStream

if (store.FileExists(@"items.std")) 
       { 

        ToDoItem item = new ToDoItem(); 
        try 
        { 
         IsolatedStorageFileStream save = new IsolatedStorageFileStream(@"items.std", FileMode.Open, store); 
         BinaryReader reader = new BinaryReader(save); 
        } 
        catch (Exception exc) 
        { 
         MessageBox.Show(exc.Message); 
        } 

dans la classe publique partielle NewToDo: PhoneApplicationPage J'ai ajouté la méthode suivante. Ce qui renvoie encore une fois les exceptions ci-dessus, je suppose seulement que c'est autorisé pour une raison quelconque ou que je fais des erreurs énormes.

private void saveItem(ToDoItem toDoItem) 
     { 
      try 
      { 
       using (StreamWriter sw = new StreamWriter(store.OpenFile(@"items.std", FileMode.Append))) 
       { 
        sw.WriteLine(toDoItem.ToDoName); 
        sw.WriteLine(toDoItem.ToDoDescription); 
        sw.WriteLine(toDoItem.PriortiySelection.ToString()); 
       } 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show(e.Message); 
      } 

     } 

Si u besoin de plus d'informations, je suis toujours heureux de fournir, je suis actuellement étudiant à une deuxième année de collège Belgique et je suis jouer avec les fenêtres des applications de phone7.

Répondre

1

Ce qui suit va lire le contenu d'un fichier de stockage isolé

using (var store = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    if (!store.FileExists(VIEW_MODEL_STORAGE_FILE)) 
    { 
     return result; 
    } 

    using (var isfs = new IsolatedStorageFileStream(VIEW_MODEL_STORAGE_FILE, FileMode.Open, store)) 
    { 
     using (var sr = new StreamReader(isfs)) 
     { 
      string lineOfData; 

      while ((lineOfData = sr.ReadLine()) != null) 
      { 
       result += lineOfData; 
      } 
     } 
    } 
} 

L'exemple construit une chaîne de données (result). C'est en fait un objet sérialisé qui est en fait une collection d'autres objets. Cela peut ensuite être désérialisé à la collection. C'est probablement préférable à ce que vous essayiez de faire en écrivant des propriétés dans un fichier à la fois.

Voici comment écrire le fichier:

using (var store = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    using (var isfs = new IsolatedStorageFileStream(VIEW_MODEL_STORAGE_FILE, FileMode.Create, store)) 
    { 
     using (var sw = new StreamWriter(isfs)) 
     { 
      sw.Write(serializedCollectionObject); 
      sw.Close(); 
     } 
    } 
} 
+0

Merci accouplent là, je suis maintenant en mesure de stocker et de sauver mon objet sans que ce soit difficile « serializedCollectionObject » cela ne fonctionne pas? en Silverlight? Suivant en haut Informations détaillées. – Syneryx

1

Est-il possible que vous n'êtes pas disposer tous vos objets jetables et rencontrez un problème lorsque vous essayez d'accéder à une ressource pour une deuxième fois, car il est encore en cours d'utilisation ?

L'instruction using est un bon moyen de gérer cela facilement, plus ici.

Dispose with Using

Un peu plus d'information sur le sujet ici où JM47 obtenait le même message d'erreur pour cette raison.

Problem opening a stream to an isolatedstorage image already the source on an image?

+0

J'ai eu ce problème - une partie de mon code avait oublié d'appeler fileStream.Close(), donc plus tard quand une autre partie de mon code a essayé d'ouvrir le fichier, il a eu l'exception. (Silverlight pour le Web) – CodeThug