【发布时间】:2011-05-20 23:22:14
【问题描述】:
我在使用 WP7 隔离存储和应用程序设置时遇到了一个大问题。 我一直使用 Adam Nathan 的 101 Windows Phone 7 应用程序第 1 卷中的代码作为基础。
我有一个设置页面,可以在其中更改值,并且当应用程序仍在运行时,这些页面仍然处于活动状态,并且一切正常。但是,一旦应用在我的开发者手机上退出,这些内容就会丢失,并且应用会以默认设置重新启动。
我不知道为什么这些值没有持续存在。任何帮助将不胜感激。
这是我得到的代码,来自亚当·内森的新书。我在推特上给他发了一条消息,他说这与不可序列化的数据类型有关。我对此进行了调查,但我只使用了 double 和 bool 值。
public class Setting<T>
{
string name;
T value;
T defaultValue;
bool hasValue;
public Setting(string name, T defaultValue)
{
this.name = name;
this.defaultValue = defaultValue;
}
public T Value
{
get
{
//checked for cached value
if (!this.hasValue)
{
//try to get value from isolated storage
if (IsolatedStorageSettings.ApplicationSettings.TryGetValue(this.name, out this.value))
{
//not set yet
this.value = this.defaultValue;
IsolatedStorageSettings.ApplicationSettings[this.name] = this.value;
}
this.hasValue = true;
}
return this.value;
}
set
{
//save value to isolated storage
IsolatedStorageSettings.ApplicationSettings[this.name] = value;
this.value = value;
this.hasValue = true;
}
}
public T DefaultValue
{
get { return this.defaultValue; }
}
//clear cached value;
public void ForceRefresh()
{
this.hasValue = false;
}
}
进一步发展:
我在退出应用程序时收到此错误:
“System.IO.IsolatedStorage.IsolatedStorageException”类型的第一次机会异常发生在 mscorlib.dll 中
发现错误:我是个白痴,漏掉了一个感叹号!来自 trygetvalue 部分。
【问题讨论】:
-
您能告诉我们您的隔离存储代码吗?
-
完成了,已经添加到上面了,谢谢
-
谢谢,我已经有了这篇文章,虽然相关并没有真正包含问题的解决方案
标签: silverlight windows-phone-7 c#-4.0 isolatedstorage