在拋光我的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