我可以加载到表单控件上的最大数据量是多少?
我的应用程序占用太多内存,并且在我的经验中将超过500,000条记录添加到任何Windows窗体控件时会挂起。有线索吗?
答案 0 :(得分:6)
是的,这会导致问题。
不要添加那么多记录。
没有人需要那么多。您需要做的是添加过滤功能,以便用户可以指定他/她想要使用的数据范围。
例如,让用户缩小搜索范围(如果是时间敏感数据)或订单号范围,或者......好吧,等等。
但我可以保证找到一种方法来向网格添加500K行或不是解决方案。
答案 1 :(得分:3)
看起来您已找到应用的最大内存占用量。
没有单一措施。
应用程序内存还包括您的应用正在使用的GDI句柄,文件句柄,线程。 使用任务管理器确保您没有GDI句柄泄漏。
此外,向用户界面加载500,000条记录并不是一个好习惯,用户永远无法处理这么多信息,请通过分页或其他方式来改变您的做法。
答案 2 :(得分:1)
这是一大堆数据;首先要做的是减少数据量 - 但是,由于您在标记中提到DataGridView
,因此对于大型数据方案存在“虚拟模式”。请参阅MSDN,here (overview)和here (howto)。
一些(但不是全部)其他基于列表的控件也具有“虚拟模式”支持。
答案 3 :(得分:0)
我通常做的事情是限制屏幕上显示的记录数量,通常为20,但这取决于您尝试显示的数据类型。
我通常在此之后应用过滤,并将数据和修订的记录数返回给应用程序。如果用户希望能够看到所有记录,他们可以导出到另一个应用程序(通常是Excel,它会破坏,但也会导致XML。)
但是,没有人会阅读50万条记录。