在抛光我的WP7应用程序时遇到此问题。在WP7中,写入IsolatedStorage后数据不会立即保存
虽然我按照微软的准则来存储游戏状态,当它被停用,我也想保存在运行时的一些数据。
这样做的原因是,当将电池从设备上移除,没有失活/关闭回调被触发。
这个问题是当用户走过的游戏,不小心删除电池从她的装置 - 所有游戏进度都将丢失。
这就是为什么我做保存在某个中间检查站的比赛状态,但我注意到,数据不会立即存储。这是我的“保存”功能:
public void SaveAppModelToIsolatedStorage()
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
using (var stream = new IsolatedStorageFileStream(APPMODEL_DATAFILE,
FileMode.Create,
FileAccess.Write,
store))
{
var serializer = new XmlSerializer(typeof(AppModel));
try
{
serializer.Serialize(stream, AppModel);
}
catch (Exception ex)
{
Debug.WriteLine("Cant serialize AppModel:" + ex.Message);
}
}
}
之后它被调用时,如果我删除了一些秒(不知道有多少,但总是小于30),应用程序结束了丢失的游戏进度之内的电池。如果在取出电池之前等待,数据将被成功保存。在各种WP7手机上都会出现这种情况。
我也尝试序列化到字符串缓冲区中,然后调用stream.Write()
编写字符串缓冲区里的文件,但结果是一样的。另外,stream.Flush()
似乎没有效果。
此行为是否为平台功能?
它是罚款的Marketplace应用程序的微软认证的条款?
或者有没有办法立即保存数据?
“是精在Marketplace应用程序的微软认证的术语” - >你不应该来处理这种情况,所以不用担心认证。 – 2012-04-10 11:11:26
您说“调用后” - 您是否检查该方法是否实际执行完?它可能没有像你想象的那么快完成。 – 2012-04-10 14:46:24