如何在Windows窗体C#中保存大量数据

我目前正在将大约一百万行存储到DataTable中,
这需要大约600 Mb的RAM.

因此,当您运行应用程序时,它会在DataTable中存储1 000 000行并在GridView上显示该行.关闭应用程序时,这显然会清除内存.

我想向用户提供此选项,换句话说,当用户尝试关闭表单时,将询问他是否要清除内存.

这样做的原因是,每次运行应用程序时都不必等待数据被读入Datatable.

….我对C#相当新,所以如果这是一个适当的问题,我道歉.

解决方法

如果存储器中存在正在运行的应用程序/进程,则只能在内存中保留一些内容 – 如果应用程序关闭(并且只有一个应用程序实例在内存中打开),则内存将被释放.如果你想将它保存在内存中,那么你唯一的选择就是

>不要关闭您的申请,例如只是隐藏窗口(通常是一个非常糟糕的想法,你的用户不会感谢你)
>将数据保存在另一个单独的进程中,即使您的应用程序不是这样,也可以继续运行,例如Windows服务(再次可能不是您的用户会感谢您的内容,除非您实际上正在尝试开发一种服务形式)而不是Windows应用程序).

更好的想法是改变应用程序使用大型数据集的方式,这样就不需要将它全部保存在内存中,例如,如果在大型列表视图中显示所有数据,则使用虚拟列表视图这样只有当前显示用户的那些行才会被加载到内存中.然后,您可以将数据存储在外部数据库或半永久性文件(例如sqlite数据库)中.

或者只是像你现在一样加载数据集.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...