使用Thread在Gridview上填充数据

时间:2011-03-09 14:38:05

标签: multithreading datagridview using

我在我的表单中有一个winform Datagridview控件在加载时我填充了近1000条记录。每隔几秒就从我的sql server获取数据,并且必须在网格上填充数据。我不希望我的网格冻结。请帮帮我......

2 个答案:

答案 0 :(得分:0)

  1. 将人口代码放入方法中。
  2. 在方法中放置一个循环,直到布尔变量设置为TRUE为止。
  3. 创建一个调用该方法的线程对象。
  4. 启动线程对象。
  5. 当方法需要更新网格时,必须使用DELEGATE和DataGridView.Invoke方法来更新网格;否则你会遇到线程错误。
  6. 如果要取消线程,请将变量设置为TRUE。

答案 1 :(得分:0)

只需使用计时器,当它打勾时创建一个新线程并更新DataGrid

Windows窗体和TPL(.NET Framework 4和3.5)的示例。

初始化计时器:

this.timer = new Timer() { Interval = 2000 };
this.timer.Tick += OnFetch;
this.timer.Start();

管理Tick事件:

private void OnFetch(object sender, EventArgs e)
{
    Task.Factory.StartNew(() =>
    {
        // Get the data from your db
        var data = GetDbData();
        foreach (MyElement row in data)
        {
            if (dataGridView1.InvokeRequired)
            {
                dataGridView1.Invoke(new Action(() =>
                {
                    // Add the row
                }));
            }
        }
    });
}
相关问题