Windows应用商店应用增量序列化

时间:2012-12-21 22:16:28

标签: c# serialization windows-8 windows-runtime windows-store-apps

所以我最终获得了listview内容以序列化并写入文件,因此我可以在不同的会话中恢复我的应用程序状态。现在我想知道是否有一种方法可以逐步序列化并保存我的数据。目前,我在我的主页的SaveState方法中调用此方法:

    private async void writeToFile()
    {
        var f = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync("data.txt", CreationCollisionOption.ReplaceExisting);
        using (var st = await f.OpenStreamForWriteAsync())
        {
            var s = new DataContractSerializer(typeof(ObservableCollection<Item>),
                                   new Type[] { typeof(Item) });
            s.WriteObject(st, convoStrings);
        }
    }

我认为更理想的是在生成数据时将数据写入存储,因此我不必在小暂停时间范围内序列化整个列表,但我不知道这是否可行逐步序列化我的集合,如果是,我该怎么做?

请注意,我的数据在生成后不会更改,因此除了将新数据附加到当前序列化列表的末尾之外,我不必担心任何其他内容。

1 个答案:

答案 0 :(得分:0)

这取决于您何时定义何时将数据保存到硬盘驱动器。也许你想在添加或删除新的集合项时保存新的集合状态?或者当项目的内容发生变化时。

将所有内容及时保存到硬盘驱动器的主要问题是,这可能是狗狗慢。如果您使用的是async编程模型,那么直接就不会有问题,因为您的应用程序不会挂起,因为一切都是异步的。

我认为保存集合说每分钟以及用户关闭应用程序时可能更好。这只有在你处理大量数据时才有效,因为你只有大约3秒的时间来执行所有的IO工作。

如您所见,没有完美的解决方案。这实际上取决于您的要求和数据的大小。没有进一步的信息,我可以肯定地告诉你。