我有一个PeriodicTask,用于更新手机应用的磁贴,并将信息保存到持久存储中。
这个工作正常,直到列表大小达到11或12的大小。
我保存的对象是一个有大约5个成员的poco对象。 我基本上获取数据,保存数据并创建图块(未显示)。
所以
//get data
var newData = GetPocoFromWeb();
base.Add(newData);
基类
public abstract class DataFetcher<T> where T : IDataCarrier, new()
{
protected readonly IPersist<List<T>> Persist;
protected DataFetcher(IPersist<List<T>> persist)
{
Persist = persist;
}
protected void Add(T item)
{
var items = Persist.Load();
items.Add(item);
Persist.Save(items);
}
}
持久化课程
public class Persist<T> : IPersist<T>
{
private readonly string _identifier;
public Persist(string identifier)
{
_identifier = identifier;
}
public virtual T Load()
{
if (IsolatedStorageSettings.ApplicationSettings.Contains(_identifier))
{
return (T)IsolatedStorageSettings.ApplicationSettings[_identifier];
}
return default(T);
}
public virtual void Save(T item)
{
IsolatedStorageSettings.ApplicationSettings[_identifier] = item;
IsolatedStorageSettings.ApplicationSettings.Save();
}
}
我可能使用了错误的存储空间吗? 列表中的11个项目并不是那么多。
更新: 当我加载列表并使用应用程序(而不是通过periodicTask)添加到它时,我可以轻松地保存数百个项目。
我在模拟器中运行时没有出现任何错误,它只能运行直到列表中有大约11个项目然后停止工作。
答案 0 :(得分:1)
你没有详细说明你得到的错误(如果有的话),所以很难说。
话虽如此,这里有一些想到的事情:
NotifyComplete()
,您可能会在有机会之前被关闭IsolatedStorageSettings
class to share state between processes Mutex
来保护对存储的进程访问权限。答案 1 :(得分:0)
您遇到的问题究竟是什么?使用IsolatedStorageSettings不应该限制您能够持久保存的列表的大小。