C# 如何在windows窗体C中保存内存中的大型数据集#
我目前正在将大约一百万行存储到一个数据表中, 这需要大约600 Mb内存 因此,当您运行应用程序时,它将在DataTable中存储1000000行并在GridView上显示。当您关闭应用程序时,这显然会清除内存 我想给用户这个选项,换句话说,当用户试图关闭表单时,他将被询问是否要清除内存 这样做的原因是他不必在每次运行应用程序时等待数据读入数据表C# 如何在windows窗体C中保存内存中的大型数据集#,c#,winforms,memory,datatable,C#,Winforms,Memory,Datatable,我目前正在将大约一百万行存储到一个数据表中, 这需要大约600 Mb内存 因此,当您运行应用程序时,它将在DataTable中存储1000000行并在GridView上显示。当您关闭应用程序时,这显然会清除内存 我想给用户这个选项,换句话说,当用户试图关闭表单时,他将被询问是否要清除内存 这样做的原因是他不必在每次运行应用程序时等待数据读入数据表 。。。。我是C#的新手,如果这是一个合适的问题,我很抱歉。我建议您将其保存在文件或数据库中,而不是内存中。您可以查询要在运行时使用的某些数据。例如,一
。。。。我是C#的新手,如果这是一个合适的问题,我很抱歉。我建议您将其保存在文件或数据库中,而不是内存中。您可以查询要在运行时使用的某些数据。例如,一次20或50条记录
如果一次在datagrid中显示1M条记录是没有意义的,我敢打赌,即使您也不会查看这些记录。只有当某个正在运行的应用程序/进程的内存中有某个数据时,您才能在内存中保留该数据—如果您的应用程序关闭(并且只有一个应用程序实例打开,内存中有该数据)然后内存将被释放。如果你想把它保存在内存中,那么你唯一的选择就是
- 不要关闭应用程序,例如,只需隐藏窗口即可(通常这是一个非常糟糕的主意,用户不会为此感谢您)
- 将这些数据保存在另一个单独的进程中,即使您的应用程序不是Windows服务,该进程也会保持运行(同样,您的用户可能不会为此感谢您,除非您实际上正在尝试开发一种与Windows应用程序相反的服务形式)
或者像当前一样每次加载数据集。尝试压缩特定区域的数据(对象集对应于行),并在需要时提取。 参考
我不确定您的问题是否有意义,因为它的措辞是:如果应用程序关闭,您将如何将数据保存在内存中?您的意思是要将数据存储到磁盘吗?我不想破坏应用程序启动时创建的数据表,这必须是用户从内存中删除数据表的决定。如果应用程序关闭,则无法将数据表保留在内存中。当应用程序启动时,它将不在那里,除非您加载它!是的,我知道,我认为在C#中可能有一种“简单”的方法来实现这一点,而无需创建窗口服务或写入磁盘。我只是在对应用程序进行压力测试,我复制了一个包含14000行的表。数据来自数据库,我将其存储到DataTable中,因为查询数据库比查询DataTable需要更长的时间。因此,我不希望数据存储在磁盘或数据库中,而是存储在内存中,类似于Qlikview的工作方式。我建议您一次只加载20到50条记录,因为这会使应用程序更具响应性,用户更有可能查看您加载的所有数据。如果你在谷歌上搜索某个东西,它会显示每页10000条结果,需要多长时间,以及你要查看多少条结果?对不起,我获取的速度有点慢,谢谢。