在我的计划中,我尝试使用员工列表并将其标记为已解雇(当然,这只是为了好玩)。我可以让程序做任何我想做的事情,除了记住我已经做过的事情。所以,我试图将列表保存在一个文件中,然后在程序启动时将该文件读回程序中。不幸的是,当程序被强制关闭时,应该读取文件的相同函数会导致程序崩溃。我不知道我可以调试程序,因为我执行任务,关闭程序(关闭调试器)然后再打开程序......
这是我在"开始"等待时的功能。单击按钮。
async private Task readJsonAsync()
{
var jsonSerializer = new DataContractSerializer(typeof(List<Employee>));
try
{
var myStream = await ApplicationDate.Current.LocalFolder.OpenStreamForReadAsync(JSONFILENAME);
employees = (List<Employee>)jsonSerializer.ReadObject(myStream);
}
catch (FileNotFoundException ex)
{
employees = Employee.Initialize();
}
}
当我保存列表时,它似乎工作。当我在模拟器上强制关闭后重新打开应用程序时,我得到了#34;程序&#39; [3156] employeeTest05.exe&#39;已退出代码-1073741819(0xc0000005)&#39;访问违规&#39;&#34;在我甚至可以看到&#34;开始&#34;按钮。当我在强制关闭后在设备上重新打开应用程序时,我可以进入应用程序,但是我无法开始使用该程序,因为它在屏幕上没有错误而崩溃,并且调试器已关闭。
我是以错误的方式来做这件事的吗?我关心如何保存Employee对象的属性,只保存它们并可以检索它们。
答案 0 :(得分:0)
您想要的案例称为Tomestoning。您可以在此处阅读最佳做法: App activation and deactivation for Windows Phone 8。
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
// TODO: call your save function
// PhoneApplicationService.Current.State["your_key"] = your_value;
}
如果你想要一个通用的读写例子。请参阅我在此处保存/加载列表作为xml文档的答案。您可以修改它以使用您的JSON。