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

當我按下按鈕,我去好友頁面,從孤立storage.Than加載很多朋友,我按「後退」按鈕,進入菜單頁面,當我按下再次按鈕,我有「IsolatedStorageFileStream不允許操作」。信息。 我如何無法重新加載頁面並將其保存在RAM中。 喜歡的東西:導航無需重新加載

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

回答

1

每當你導航到一個頁面,它會自動重新加載。一旦你離開它們,頁面本身就不會留在內存中。如果你想存儲它的內存,而不是每次都從獨立存儲中讀取它,那麼你可以簡單地創建一個包含靜態Liststatic類,它存儲你的朋友。一旦你加載了你的朋友,根據他們的類型,你可以將它添加到列表中。無論何時您需要訪問它們,只需從靜態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; 

即使你使用上面的方法,你應該嘗試修復你得到的錯誤。你可以發佈你的隔離存儲代碼嗎?

1

如果你想擺脫的錯誤信息,你應該在使用()塊使用流,

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

關於儲蓄網頁,它通常不是一個好主意,因爲你的記憶會exponentialy增長並且您的應用程序將非常無響應。

雖然你可以隨時使用App.xaml.cs作爲應用程序的全局實例緩存一些數據來源:

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

,但如果你這樣做是非常小心,不要存儲的負載數據。

相關問題