gpt4 book ai didi

.net - 如何保持动态填充的数据集与程序保持一致?

转载 作者:行者123 更新时间:2023-12-04 07:10:00 24 4
gpt4 key购买 nike

我有一个 winform 应用程序,它使用一些引用的 Web 服务来获取数据。返回的数据是我循环并添加到数据集的对象数组。

当我调用服务时,通常需要 2 到 3 分钟才能获取所有数据。

如果用户退出程序并稍后返回,我不希望他们再次重新下载所有数据。

当我在 Debug模式下运行应用程序时,下载的信息没有持久性;这让我很担心。

我仍然处于“开发模式”,所以我还没有真正组装一个安装程序来测试信息是否保留在应用程序中。

我对几件事很好奇:

  • 用户退出后,数据集中存储的数据是否保留?
  • 如果没有,您对如何实现这一目标有什么建议?
  • 我考虑过使用 XML 进行存储;当你有 9-10 MB 的数据时,这是最好的选择吗?

    编辑:最终结果:
    好的 - 这是最终结果(感谢大家的快速回复)

  • 当应用程序退出时,我调用一个函数来保存数据。这是一个片段:
       using System.IO;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    FileStream fs;
    IFormatter formatter = new BinaryFormatter();
    //activities
    if (actList.Length > 0)
    {
    fs = new FileStream("activities.bin", FileMode.Create, FileAccess.Write, FileShare.None);
    formatter.Serialize(fs, actList);
    fs.Close();
    }
    //users
    if (userList.Length > 0)
    {
    fs = new FileStream("users.bin", FileMode.Create, FileAccess.Write, FileShare.None);
    formatter.Serialize(fs, userList);
    fs.Close();
    }

    userList 和 actList 参数是来自 Web 服务调用的 List 对象。

    我实现的另一件事(稍微偏离主题)是创建一个应用程序设置以保存用户上次从 Web 服务下载的时间。它被保存为
    Properties.Settings.Default.last_downloaded

    如果用户单击下载按钮,系统会提示他们上次执行下载的日期,并有机会说“不”。

    再次感谢你的帮助!

    最佳答案

    除非您自己编写,否则 .NET 对象没有持久性 - 例如通过序列化到用户配置文件中的文件(或 isolated storage 用于 ClickOnce)。

    注意:我个人不会使用 DataSet在这种情况下;如果您将数据作为对象列表下载,那么就保持它们那样 - List<T>等等。

    Re xml:9-10Mb 很大但不是很大。这实际上取决于数据的性质和其他要求;除非您已经在使用网络压缩(GZIP 等),否则您可能会发现使用更紧凑的格式(例如 csv)或二进制格式(例如 protocol buffers)可以更快地传输数据。 .

    关于.net - 如何保持动态填充的数据集与程序保持一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516188/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com