2010-11-20 8 views
2

Windows Phone 7 App アプリケーションの目標は簡単なTo Doリストです。 私はクラス 'toditem'を持っています。これらのオブジェクトをItemsオブジェクトに追加します。silverlight、保存負荷、IsolatedStorageFileおよびIsolatedStorageFileStream。例外

私が本当に複雑で、最も可能性の高い無洗浄やまともなコード

何かをやっているように思える。しかし、私は「IsolatedStorageFile」

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

アイテムクラス(basiclyラッパーでいくつかの深刻な問題を抱えていますCLASので、私はそれをアクセスもできます)

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

     static methods here.. 
    } 

コードはbelowsの次の例外を返します。

"メソッドにアクセスしようとしましたが、失敗しました: System.Io.streamreader..ctor (可能System.String)"

、その後私が得る

操作に許可されていません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); 
        } 

パブリック部分クラスNewToDo:PhoneApplicationPage 私は次のメソッドを追加しました。上記の例外を再び返します。私は何らかの理由でallowdを仮定するか、いくつかの大きな間違いを犯します。

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); 
      } 

     } 

uは私はいつもそれを提供するためにうれしいより多くの情報が必要な場合は、私は現在、ベルギーの大学二年の学生だと私は窓のphone7のアプリで遊んでいます。

答えて

1

以下が

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; 
      } 
     } 
    } 
} 

分離ストレージからファイルの内容を読み取り例は、データの列(result)を構築します。これは実際には他のオブジェクトのコレクションである直列化されたオブジェクトです。これをデシリアライズしてコレクションに戻すことができます。これはおそらく、一度に1つずつプロパティをファイルに書き出すことでやっていたことよりも望ましいものです。ここで

は、ファイルの書き込み方法は次のとおりです。

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

おかげで私は今では、これは動作しません「serializedCollectionObject」なしもタフな私のオブジェクトを格納して保存することができるよ、チームメイト?銀色で? 次の詳細情報 – Syneryx

1

をまだ使用中ですので、あなたはすべてのあなたの使い捨てのオブジェクトを配置し、二度目のリソースにアクセスしようとすると、問題が発生していないことが可能です?

これを簡単に処理するには、usingステートメントを使用することをお勧めします。 Jm47はこの理由のために同じエラーメッセージを取得した、ここで話題に

Dispose with Using

もう少し背景。そこ

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

+0

私はこの問題を抱えていました。コードの一部がfileStream.Close()を呼び出すことを忘れてしまったので、後でコードの別の部分がファイルを開こうとしたときに例外が発生しました。 (Web用Silverlight) – CodeThug

関連する問題