2011-07-02 6 views
0
private void btn_friends_pressed(object sender, RoutedEventArgs e) 
     { 
      NavigationService.Navigate(new Uri("/Friends.xaml", UriKind.Relative)); 
     } 

私はボタンを押すと、隔離されたストレージから多くの友人をロードする友達ページに行きます。私が「戻る」ボタンを押してメニューページに移動すると、もう一度ボタンを押すと、 "OperationはIsolatedStorageFileStreamで許可されていません"メッセージ。 ページを再ロードしてRAMに保存する方法がありません。 何かのように:あなたがページに移動するたびにページウィンドウ間のナビゲーション再読み込みなしで

if (Friends.Page.IsRunning==true) 
    NavigationService.Navigate("/Friends.xaml"); 
else 
    NavigationService.Navigate(new Uri("/Friends.xaml", UriKind.Relative)); 

答えて

1

、それが自動的にリロードされます。一度ページを移動すると、ページ自体はメモリに保持されません。メモリを保存し、そのたびにIsolated Storageから読み込まない場合は、お友達を格納するスタティックListを含むstaticクラスを作成するだけです。友だちを読み込んだら、その種類に応じてリストに追加することができます。あなたがそれらにアクセスする必要があるときはいつも、静的なListからそれを呼び出してください。

using ... //your using directives 

namespace MyApp //Your project Namespace 
{ 
    public static class FriendsStorage //rename `FriendsStorage` to whatever you want 
    { 
     public static List<Friends> ListOfFriends = new List<Friends>(); //Your list 
    } 
} 

それを設定するには、IsolatedStorageからの情報をロードし、リストに追加することができます:

foreach(Friend f in Friends) 
    FriendsStorage.ListOfFriends.Add(f); 

あなたが照会する必要があるときは例えば、あなたのソリューションでは、新しいクラスを作成します友人リストは、次のように呼び出すことができます:

var friendList = FriendsStorage.ListOfFriends; 

上記の方法を使用しても、あなたが得ているエラーを解決してください。 Isolated Storageのコードを投稿できますか?

1

あなたのメモリがexponentialy成長することができますので、あなたがエラーメッセージを取り除くしたい場合は、保存ページについて使用して()ブロック、

using (var stream = new IsolatedStorageFileStream(...)) 
{ 
    // load your data here 
} 

であなたのストリームを使用する必要があり、それは一般的に良いアイデアではありませんアプリケーションが非常に応答しなくなります。

常にあなたのデータソースの一部をキャッシュするために、アプリケーションのグローバルインスタンスとしてあなたApp.xaml.csを使用することができますが:の負荷を保存しないようにあなたは、これは非常に気をつけてなかった場合は

List<Friend> _Friends; 
List<Friend> _Friends 
{ 
    get 
    { 
     if(_Friends == null) _Friends = GetFriends(); 
     return _Friends; 
    } 
} 

をデータ。

関連する問題