2017-09-26 14 views
0

我正在使用datagridview在窗体表单应用程序中进行数据呈现。 应用程序实际上是获取了很多行并且系统卡住了,进入不响应状态。它通常获得100K +行。 正常的C#窗体应用程序可以在datagridview中轻松加载多少行正常的C#窗体表单应用程序可以在datagridview中轻松加载多少行

+1

您的速度可能受到列数以及它们存储的数据类型的影响。也没有关于您如何呈现数据的信息。也许如果你提供一些额外的信息,我们可以帮助你更好。你通常应该罚款100k行... – 0014

+1

你正在加载UI线程中的数据我相信。卸载加载到后台工作者/单独的线程/异步任务,并且一旦数据被完全加载,将其全部同步到UI线程和数据网格。这将消除“无响应状态”,但针对您的问题的更好解决方案是重新考虑逻辑,因为用户在单个网格中很少需要100K +记录,因为这对于人类来说是太多了。您希望如何一次看到100K链接的搜索引擎响应? –

+2

这是一种错误的问题。您正在为人类的利益创建UI,而不是保持操作系统的快乐。所以真正的是“用户可以合理处理多少行”。关于50.这当然不会导致性能问题。在他的腿上倾倒100K行只是产生完全无法使用的用户界面,没有人看过,所以不值得考虑。看看谷歌为百万比赛提供灵感提示的方式。 –

回答

1

我不认为它是一个好主意,首先获取100k +行并显示所有网格,使用可以使用更快,更高效的分页。根据数据库的流量和性能,您可以一次控制要一次提取的记录数量。

@pageNumber AS INT, 
@rowsPerPage AS INT, 

OFFSET((@PageNumber -1) * @RowsPerPage) ROWS 
FETCH NEXT @RowsPerPage ROWS ONLY; 
GO 

阅读这篇文章: https://10tec.com/articles/why-datagridview-slow.aspx

0

我分析的应用和发现有什么不对的datagridview的。如果需要它可以包含100K行。 还有一些其他函数会在数据加载时执行,这会花费很多时间并使应用程序处于未响应状态。 虚拟模式和寻呼也是不错的选择。 我同意你的观点,即100K行对于人来说是太多了。那只是浪费资源和努力。我明白那个。我其实正在尝试改进别人的应用程序。 谢谢你们!

相关问题