【发布时间】:2011-11-11 23:35:53
【问题描述】:
我昨天发帖是因为我怀疑我编写的 LINQ-to-SQL 查询速度非常慢。我正在做的是迭代我的查询结果,并从中构造一个 DataTable。然后我将 DataTable 绑定到表单上的 DataGridView。
我认为查询是缓慢的部分,但我反驳了这一点 - 查询以及 DataTable 构造最多需要一两秒钟,但是当我在 DataGridView 上设置 DataSource 属性时,应用程序似乎在显示网格之前挂起大约 10 秒。
我尝试过使用反射在 DGV 上设置 DoubleBuffered 属性,但遗憾的是没有什么不同。有没有其他人遇到过这样的问题?
编辑:请注意,如果网格有少量的行(即 30-40),它会起作用。一旦行数达到数百,它就会停止
【问题讨论】:
-
在这个 MSDN 条目(Windows 窗体 DataGridView 控件中的性能调优)中可能有一些有用的东西:msdn.microsoft.com/en-us/library/ms171621.aspx
-
我曾经在后台使用 linq-to-sql 的 DataGridView 非常慢,因为在数据绑定期间触发了延迟加载的引用。如果您确定没有发生类似的事情,那么我建议您手动生成相同大小的数据表并查看您是否仍然遇到问题 - 如果问题仍然存在,那么您可能需要实现虚拟模式。
-
@David Hall :很可能是延迟加载,可以通过 datacontext 上的 dataloadoptions 解决。另请参阅我的答案
标签: c# winforms linq-to-sql datagridview