Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用列表的慢速DataGridView绘图<&燃气轮机;作为C中的数据源#_C#_List_Performance_Datagridview_Datasource - Fatal编程技术网

C# 使用列表的慢速DataGridView绘图<&燃气轮机;作为C中的数据源#

C# 使用列表的慢速DataGridView绘图<&燃气轮机;作为C中的数据源#,c#,list,performance,datagridview,datasource,C#,List,Performance,Datagridview,Datasource,我一直在阅读有关数据网格视图绘制速度慢的问题,但我找不到解决方案,因此我将尝试分享我的代码的清晰示例和时间度量(超过6秒…) 我在i7 CPU、16Gb RAM、2Gb GPU上使用双缓冲区和VirtualMode,绘图时间相同。我有一个列表(大约10.000个简单结构元素),我将其用作DataGridView的数据源,代码如下: this.Cursor = Cursors.WaitCursor; this.dataGridViewList = this.completeList.FindAl

我一直在阅读有关数据网格视图绘制速度慢的问题,但我找不到解决方案,因此我将尝试分享我的代码的清晰示例和时间度量(超过6秒…)

我在i7 CPU、16Gb RAM、2Gb GPU上使用双缓冲区和VirtualMode,绘图时间相同。我有一个列表(大约10.000个简单结构元素),我将其用作DataGridView的数据源,代码如下:

this.Cursor = Cursors.WaitCursor;

this.dataGridViewList = this.completeList.FindAll (
    r => r.code >= 0
);

this.myDataGridView.AutoGenerateColumns = false;
this.myDataGridView.DataSource = this.dataGridViewList;
this.myDataGridView.ClearSelection();

this.Cursor = Cursors.Default;
这是时间,它真的很慢,列表不是问题,它可以在毫秒内排序,我确信问题是DataGridView重新填充或绘图


我在DataGridView或表单上使用DoubleBuffer?还有dgv.Suspend/ResumeLayout。您可能还想关闭任何列宽自动功能,直到数据全部存在!您的图像显示的时间跨度为
对不起,我是西班牙人,这里的重点是“.”是您的逗号“,”作为千位分隔符:我猜您在错误的地方寻找性能的“滞后”。在我的测试中,使用一个简单的
列表
,始终使用一百万个元素,加载到网格中的时间不到0.4秒。将一百万条记录“加载”到
列表中大约需要1.5秒。这是“无”双缓冲或虚拟模式。10000个元素并不是很多记录,默认的
DataGridView
应该可以立即处理那么多记录。关键是,除非你在运行发布的代码之后“做些什么”,否则我会看看你是如何获取数据的。我建议在“将数据加载到
列表
”周围放置一块
秒表
,在设置网格的代码周围放置另一块
秒表
。这应该告诉你这个滞后是从哪里来的。我确信它不是来自
this.myDataGridView.DataSource=this.datagridview列表