应用程序永远不会在逻辑删除后再次成功启动。没有异常抛出

时间:2011-03-11 07:12:30

标签: c# windows-phone-7

我在修补逻辑删除后从启动恢复/加载应用程序时遇到问题。

在以下行失败:

ServerCollection collection = AppSettings.GetSetting(AppResources.settings_servercollection) as ServerCollection;

此行位于启动和激活内部调用的函数中。

AppSettings类是此类Here:,但我将其修改为使用object而不是<T>.

调试器似乎没有进入AppSettings功能。它还显示我希望键入的字符串(AppResources.settings_servercollection),所以我认为这也不是问题所在。

最后,不会抛出异常。我尝试了整个部分,并在应用程序的UnhandledExceptionNavigationFailed内部使用断点,但我似乎从来没有到达任何一个。

之前是否还有其他人经历过此事,或者知道原因可能是什么?

编辑:只是想指出当然应用程序在清理/重建/重新安装等后工作。 编辑:我已经能够把它分离出来了:

IsolatedStorageSettings Settings = System.IO.IsolatedStorage.IsolatedStorageSettings.ApplicationSettings;

我通过将它放在AppSettings的每个Get / Set函数中,并在进入函数后看到它直接在该行上死掉了。那说,任何想法?

3 个答案:

答案 0 :(得分:2)

我发现IsolatedStorage处于无效状态的应用程序存在问题

我猜这是你的应用程序的问题

  • 因为Windows phone 7 config / appSettings?中发布的示例代码在存储值后我最初没有在AppSettings上调用Save()(我刚刚编辑过它!)
  • 因此,这会使IsolatedStorageSettings处于无效状态
  • 因此应用程序无法越过private static IsolatedStorageSettings Settings
  • 的静态初始值设定项

尝试解决问题:

  • 卸载您的应用 - 这将清除您的隔离存储空间
  • 将Save()添加到StoreSetting()方法的末尾
  • 再次跑步

答案 1 :(得分:1)

我怀疑序列化(和反序列化)ServerCollection对象时出现问题。

在内部,传递给IsolatedStorageSettings的对象被序列化为XML(使用DataContractSerializer - 这可能是使用IsolatedStorageSettings的性能影响的一部分。如果您的对象无法正确反序列化,您可能会看到此问题。

作为替代方案,我建议您自己处理[de]序列化,然后将序列化版本存储在IsolatedStorageSettings中。

答案 2 :(得分:1)

序列化结果证明是正常的。真正的问题是我在一个正在保存的属性中进行了一些无限递归。

public Dictionary<string, object> Dictionary
        {
            get
            {
                if (_dictionary == null)
                    _dictionary = new Dictionary<string, object>();
                return _dictionary;
            }
            set
            {
                Dictionary = value;
            }
        }

正如你可能看到的那样,结局并不好。太糟糕了,我之前写过的控制台C#应用程序中没有“StackOverflowException”或类似内容。

无论如何,感谢您的帮助..希望有这个问题的其他人可能会觉得这很有帮助。