我无法读取.json文件到wp8.1应用程序内存

本文关键字:wp8 应用程序 内存 文件 读取 json | 更新日期: 2023-09-27 18:14:20

在我的程序中,我试图使用一个员工列表并将他们标记为解雇(当然,这只是为了好玩)。我可以让程序做任何我想做的事情,除了记住我已经做过的事情。因此,我试图将列表保存在一个文件中,然后在程序启动时将该文件读入程序。不幸的是,当程序被迫关闭时,应该读取文件的相同函数会导致程序崩溃。我不知道我可以调试程序,因为我正在执行任务,关闭程序(关闭调试器),然后再次打开程序…

这是当点击"开始"按钮时等待的函数。

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对象的属性是如何保存的,只关心它们被保存并可以被检索。

我无法读取.json文件到wp8.1应用程序内存

您想要的情况称为Tomestoning。你可以在这里阅读最佳实践: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。

通用读写XML