Windows Phone 8,应用程序设置没有持久化

Ric*_*o-E 6 c# isolatedstorage windows-phone-8

我在Windows Phone 8,C#App中有以下奇怪的行为.

我正在保存一个设置:

private void SaveProperty<T>(T property, string propertyName)
    {
        if (IsolatedStorageSettings.ApplicationSettings.Contains(propertyName))
            IsolatedStorageSettings.ApplicationSettings[propertyName] = property;
        else
            IsolatedStorageSettings.ApplicationSettings.Add(propertyName, property);

        IsolatedStorageSettings.ApplicationSettings.Save();
    }
Run Code Online (Sandbox Code Playgroud)

当应用程序运行时,我可以读取我存储的所有设置IsolatedStorageSettings.ApplicationSettings.

但是当我重新打开我的应用程序(从应用程序列表中打开它)时,IsolatedStorageSettings.ApplicationSettings-Dictionary包含Zero(0)键和值.

我错过了什么吗?

我使用ISETool.exe拍摄我的应用程序的IsolatedStorage快照(感谢chepene).我看到了这种行为:当我编写设置(这意味着SaveProperty<T>()功能完成后),并且应用程序仍在运行时,我已将设置保存在_ApplicationSettings.这与我的观察结果一致,我可以从IsolatedStorageSettings.ApplicationSettings应用程序运行的时间开始阅读.在_ApplicationSettings将被墓碑或不运行时(我可以通过按住手机的背面,按钮,进入它的时候-file也存在当应用程序被关闭与后退按钮).

但是当应用程序再次打开时(通过应用程序列表),- _ApplicationSettingsfile就消失了......

当我将文件写入IsolatedStoragewith 时,我也看到了:

SharedStorageAccessManager.CopySharedFileAsync(
    Windows.Storage.ApplicationData.Current.LocalFolder, fileName+"orig", 
    Windows.Storage.NameCollisionOption.ReplaceExisting, fileID);
Run Code Online (Sandbox Code Playgroud)

当我不读这个文件时,下次打开应用程序时它就消失了.

顺便说一句,为避免混淆:每次打开它时我都不会重新安装应用程序.

如果您需要更多信息,请询问.

任何帮助赞赏.

Ric*_*o-E 0

感谢 quetzalcoatl,我找到了解决方案:我将所有文件存储在我的应用程序的根文件夹中。首先,我读取所有文件(通过 DataContractSerializer)并将其转换为我的模型。由于有时我的文件会损坏,因此我删除了每个抛出SerialzationException. 但是当我读取每个文件时,由于_ApplicationSettings不可转换为我的模型,所以我会_ApplicationSettings自动删除......所以我了解到 ApplicationSettings 只是根文件夹中的一个文件,我可以读取删除它。所以精髓是永远不要写入根文件夹。