private void btn_friends_pressed(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Friends.xaml", UriKind.Relative));
}
当我按下按钮时,我转到朋友页面,它会从隔离存储中加载许多朋友。然后按“返回”按钮进入菜单页面,当我再次按下按钮时,我有“不允许操作”在IsolatedStorageFileStream上。“信息。 我怎么不能重新加载页面并将其保存在RAM中。 类似的东西:
if (Friends.Page.IsRunning==true)
NavigationService.Navigate("/Friends.xaml");
else
NavigationService.Navigate(new Uri("/Friends.xaml", UriKind.Relative));
答案 0 :(得分:1)
每当您导航到某个页面时,都会自动重新加载。一旦您离开它们,页面本身就不会保留在内存中。如果要存储内存,而不是每次都从隔离存储中读取内存,那么您只需创建一个包含存储朋友的静态static
的{{1}}类。一旦你加载了你的朋友,根据他们的类型,你可以将它添加到列表中。只要您需要访问它们,只需从静态List
中调用它即可。例如,在您的解决方案中,创建一个新类:
List
要进行设置,您可以从IsolatedStorage加载信息并将其添加到列表中:
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
}
}
每当您需要查询好友列表时,您可以这样调用它:
foreach(Friend f in Friends)
FriendsStorage.ListOfFriends.Add(f);
即使您使用上述方法,也应该尝试修复您遇到的错误。你可以发布你的独立存储代码吗?
答案 1 :(得分:1)
如果你想摆脱错误信息,你应该在using()块中使用你的流,
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;
}
}
但如果您这样做,请务必小心不要存储大量数据。