【发布时间】:2017-10-18 21:53:19
【问题描述】:
我在表单应用程序上创建了 2 个数据网格视图。我填写了 0 到 100 的两列。 我想同时填充两个网格视图的原始数据。为了制作填充原料,我创建了两个线程,并使用 Invoke 方法来解决跨线程异常;
public void thread1()
{ dataGridView1.BeginInvoke(new Action(delegate ()
{
a = 0;
dataGridView1.Rows.Add(20);
for (int i = 0; i < 100; i++)
{
dataGridView1.Rows[a].Cells[0].Value = i;
dataGridView1.Rows[a].Cells[1].Value = i + 1;
dataGridView1.Rows[a].Cells[2].Value = i + 2;
dataGridView1.Rows[a].Cells[3].Value = i + 3;
dataGridView1.Rows[a].Cells[4].Value = i + 4;
if (i % 5 == 0) { a++; }
dataGridView1.Refresh();
}
}));
}
但是当我使用 Parallel.Invoke 或 Task Parallel Library 数据网格视图调用主程序上的线程时,值的填充工作是连续的。
我想知道如何让它们并行化??
【问题讨论】:
-
您可能需要查看this post 以进一步提高 DataGridView 的性能。使用此解决方案,我通过一些标准的 Windows 窗体控件实现了巨大的性能提升。
标签: c# .net multithreading winforms datagridview