C# 在退出Windows Phone 8.1(通用应用程序)时保存数据
我有一个关于在Windows Universal Apps 8.1中保存/加载数据的问题 退出应用程序时,我似乎无法保存数据。我对序列化的调用是在App.xaml.cs中的C# 在退出Windows Phone 8.1(通用应用程序)时保存数据,c#,win-universal-app,C#,Win Universal App,我有一个关于在Windows Universal Apps 8.1中保存/加载数据的问题 退出应用程序时,我似乎无法保存数据。我对序列化的调用是在App.xaml.cs中的onsuspend方法中完成的,但我认为在我关闭应用程序时不会调用它 它有时保存数据,有时不保存。这是我的OnSuspending和Save方法代码 private void OnSuspending(object sender, SuspendingEventArgs e) { var
onsuspend
方法中完成的,但我认为在我关闭应用程序时不会调用它
它有时保存数据,有时不保存。这是我的OnSuspending和Save方法代码
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
// TODO: Save application state and stop any background activity
Debug.WriteLine("SUSPENDING");
HabitManager.HabitSerializer.Save();
deferral.Complete();
}
public async static void Save()
{
Debug.WriteLine("SAVED");
var json = JsonConvert.SerializeObject(HabitList.Instance.GetHabits());
var habits = HabitList.Instance.GetHabits();
foreach (var h in habits)
{
Debug.WriteLine("S: " + h);
}
StorageFile saveFile = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteTextAsync(saveFile, json);
}
所以我的问题是,有什么问题,如果这不是一个好的序列化机制,你能给我推荐一个更好的吗?谢谢您您的暂停通话在保存通话结束前返回 更改“保存”以返回任务,以便您可以等待它:
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
// TODO: Save application state and stop any background activity
Debug.WriteLine("SUSPENDING");
// Wait fir Save to finish its a sync operations
await HabitManager.HabitSerializer.Save();
deferral.Complete();
}
public async static Task Save()
{
// Same save code
}
测试悬架时也要小心。调试时,应用程序不会正常挂起,但VS提供了一个挂起按钮来模拟挂起过程。您是否节省了很多钱?暂停的允许运行时间有时间限制。@Brian Rasmussen不是真的,我只是想在退出应用程序时保存。谢谢,我昨天就这样更改了代码,但忘了更新答案。