繁体   English   中英

App-Restart(WP8)后,IsolatedStorageSettings.ApplicationSettings被关闭

[英]IsolatedStorageSettings.ApplicationSettings are dismissed after App-Restart (WP8)

在调试模式和发布模式下,仿真器和实际设备都会发生这种情况。
在应用程序中,我成功存储了几种应用程序设置-从简单的值类型到更复杂的对象和对象列表。
使用“ WP POWER TOOLS ”,我可以在IsolatedStorage的根目录中跟踪文件“ __ApplicationSettings ”。 它是“很好的”-在第一行中,我找到了一些类和程序集,它们定义了复杂的类型定义,在XML的下面以<ArrayOfKeyValueOfstringanyType...>开头。 关闭我的应用程序时, 最后运行的代码App.xaml.cs中的“ Application_Closing ” -Handler。 在这一刻,我可以最后一次检查ApplicationSettings了-一切正常。 例如:我检查条目数:

var count = System.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings.Count;

...计数正确,键/值正确。

然后-我立即重新启动应用程序(Visual-Studio-Debugging不中断), 第一段正在运行的代码App.xaml.cs中的ctor App()
在第一行中,我再次检查ApplicationSettings-Entries的计数,并且:它是0
但是: WP POWER TOOLS仍然向我显示,“ __ApplicationSettings ”文件已存在并且仍像以前一样填充。 (此错误的后果是此后,第一次尝试再次保存任何设置时,整个__ApplicationSettings-File被覆盖,并且仅包含一个新设置。)

因此,有什么可能会阻止应用程序“使用”现有的“ __ApplicationSettings-File

提前致谢!

(PS 1:我已经经历过,当保存设置时发生异常时,所有ApplicationSettings都将被销毁。我已经对所有这些设置进行了调查,并且有99.9%的把握确定不再有异常。)
(PS 2:只是为了清楚起见:并不是这样,完整的IsolatedStorage不见了。我还有另一个用于日志记录的文件,我写入了IsolatedStorage的根目录。此文件始终存在。 __ApplicationSettings文件并未被“删除”,似乎启动时该应用未“读取”该文件。)

您是否调用“ 保存设置”? 它会抛出任何错误吗?

我使用我的一个应用程序尝试了repro场景,并确认了我的期望,即在同一模拟器进程中第二次运行该应用程序时, IsolatedStorageSettings.ApplicationSettings.Count在进入App()时不为零。 因此,也希望您也能达到此理想状态!

由于您报告_ApplicationSettings文件不为空,因此我猜有两种可能性:也许某个应用程序(或其他进程?)在该应用程序的第二次运行尝试打开该文件以供读取时使_ApplicationSettings文件保持打开状态? MSFT没有记录读取的完成方式,因此也许是通过FileShare.None或FileShare.Read打开文件的,但是其他一些过程仍然可以打开文件进行写入吗? 我不知道如何在仿真器上对此进行测试,但是在实际设备上,您可以尝试以下情形:

  1. 首次运行该应用程序,确认它保存了非空的_ApplicationSettings。
  2. 重新启动电话设备(调试器将断开连接)
  3. 使用App()ctor中的断点,第二次运行该应用程序。

2)之后,我相信没有其他进程可以打开该文件,因此该应用程序应该能够读取其内容而不会受到干扰。 但是,如果您发现它在3)中仍然为零,则存在另一种可能性:

也许重新启动的应用程序在尝试将文件中的设置反序列化为您的数据结构时遇到错误? 该错误可能不会阻止在应用程序的第一次运行退出时对数据进行序列化。

要检查这种可能性,请首先在“输出,调试”窗口中查找错误消息。 第二次重新启动应用程序时,您是否看到任何错误?

如果看不到任何有用的错误消息,则下一步是简化保存为设置的数据结构。 尝试减少到​​一个简单的设置,例如整数或字符串。 查看是否可以正确还原该设置,然后将更多设置添加回该文件中,直到找到导致问题的设置为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM