我有一个WinForm应用程序,它使用一些引用的Web服务来获取数据。返回的数据是一个对象数组,我循环并将其添加到数据集中。
当我调用服务时,通常需要2到3分钟来获取所有数据。
如果用户退出程序并稍后返回,我不希望他们再次下载所有数据。
当我在调试模式下运行应用程序时,下载的信息没有持久性,这让我很担心。
我仍然处于“开发模式”,所以我还没有真正组装一个安装程序来测试信息是否与应用程序保持一致。
我对以下几点很好奇:
-
数据集中存储的数据是否在用户退出后保留?
-
如果没有,你会对如何实现这一点提出什么建议?
-
我考虑过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服务调用的列表对象。
我实现的另一件事(稍微偏离主题)是创建一个应用程序设置,以便在用户上次从Web服务下载时保存。它被保存为
Properties.Settings.Default.last_downloaded
如果用户单击下载按钮,系统会提示他们上次执行下载的日期,并有机会说“否”。
再次感谢您的帮助!