2011-04-27 63 views
0

我使用独立存储获得了一些意外的行为。在这种情况下,我使用它来维护墓碑的目的。使用独立存储在WP7上发生意外的行为

这是一个火腿收音机许可考试练习应用程序。这是发生了什么。当应用程序第一次运行时,用户在MainPage上,并选择两个链接中的一个,即OptionPage1或OptionPage2(它们的工作方式相似,因此我只关注其中一个)。在OptionsPage1上,用户从多个选项中进行选择,然后单击Launch按钮进入ExamPage,用户在这里回答问题。完成考试后,用户转到ScorePage查看分数。完成此操作后,其中一个选项是单击一个按钮返回到MainPage。

每次用户选择某个操作时,隔离存储中的文件都将使用静态方法在独立存储处理类库中进行更新。我观察到一个非常奇怪的行为。当用户点击返回到MainPage时ScorePage保存其状态时,它将位置存储为“MainPage”,因为这是用户将在下一毫秒中的位置。但是,当MainPage读取由ScorePage保存的独立存储文件时,它不具有ScorePage保存的相同内容!它有由OptionPage1保存的内容!我知道ScorePage正确保存信息,因为我在保存后立即尝试读取它,并且确定。

它几乎看起来可能有不同版本的文件被创建和更新。但这没有意义。每个页面使用完全相同的静态方法来保存和更新独立的存储文件,并且只有一个文件夹和文件名。我很困惑。

+1

如果不能看到代码,将很难说出可能发生的事情。您可以发布您的帮助器方法,并演示它们在应用的不同页面中的使用方式。 – 2011-04-27 07:33:58

+0

这可能是一种竞争条件吗?你是否异步保存? – PhilChuang 2011-04-27 14:50:49

回答

0

Cyber​​herbalist,我如果用你这个(我假设你或你的应用程序会遇到一些严重的问题与导航),有一个与Non-Linear Navigation Service工作时疑难杂症我不知道。基本上如果你使用事件处理程序保存到文件OnNavigatedTo或在某些情况下OnNavigated从你写在你以前保存的内容之上。换句话说,所有的服务都在调用GoBack()方法,在这种情况下,您将再次保存该文件的方法。

继承人它的工作原理:

首页 - > OptionsPage - > ExamPage - > ScorePage

现在,当您导航回到主页,这是真的发生了什么:

首页< - OptionsPage < - ExamPage < - ScorePage

如果是这种情况,请在App.xaml.cs文件中创建一个全局变量,用于存储是否已完成考试。然后转到任何页面保存内容,并检查“if”语句以确定您是进入进程中的下一页还是导航回主页。还要确保在您保存到ScorePage上的文件后,您可以设置完成考试的全局变量。