2014-07-22 60 views
1

在我的程序中,我尝试使用员工列表并将其标记为已解雇(当然,这仅仅是为了好玩)。除了记住我已经完成的任务之外,我可以让程序执行任何我想要的操作。所以,我试图将列表保存在一个文件中,然后在程序启动时将该文件读回到程序中。不幸的是,当程序被强制关闭时,应该读取该文件的相同函数会导致程序崩溃。我不知道我可以调试程序,因为我正在执行一个任务,关闭程序(关闭调试器),然后再次打开程序...我无法将.json文件读入wp8.1应用程序内存

这里是我的功能,这是等待一个“开始“按钮被点击。

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(); 
    } 
} 

当我保存列表,它似乎工作。当我在模拟器上强制关闭后重新打开应用程序时,我看到“开始”按钮之前,“程序”[3156] employeeTest05.exe'已退出,代码为-1073741819(0xc0000005)'访问冲突'“。当我在强制关闭后在设备上重新打开应用程序时,我可以进入应用程序,但是我无法开始使用该程序,因为它在屏幕上没有出现错误而崩溃,并且调试程序已关闭。

我该怎么做呢?我关心如何保存Employee对象的属性,只保存它们并可以检索它们。

回答

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。

Generic Read and Write XML

相关问题