DataViewGrid同步C#

时间:2013-12-02 08:57:04

标签: c# .net dataview

我是C#的新手,并且要求DataViewGrid具有固定行和三列。每列的数据来自不同的源,并且三个线程同时运行以接收它。现在,是否可以更新这些列,即 第一列第一列 第二列由第二个线程组成 第三列由第三个线程组成 不使用任何同步对象? 如果这不可能,那么我将创建三个DataViewGrid,它将由各个线程更新。

2 个答案:

答案 0 :(得分:0)

您使用的是Windows窗体还是WPF? 通常,您可以使用称为Bindings的东西。在WinForms中,UI控件上通常有一个属性“ DataContext ”。您可以从其他线程更新该属性。然后,您可以控制哪个列与您为DataContext提供的List或数组的哪个属性匹配。 在WPF中有可观察的集合。您还将控件映射到Property,然后从其中一个线程更新该属性。

很难给你更多的建议,因为我缺乏关于你正在使用哪种技术以及哪种架构(MVC,MVVM,......)的信息。 如果您需要更多帮助,请更新您的问题并向我们提供更多信息。

答案 1 :(得分:0)

适合我,但我不喜欢它。

private void button1_Click(object sender, EventArgs e)
{
  for(int i = 0; i < 10; i++)
  {
    DataGridViewRow newRow = new DataGridViewRow();
    this.dataGridView1.Rows.Add(newRow);
  }

  FillThread[] t = new FillThread[3];

  for (int i = 0; i < 3; i++)
  {
    t[i] = new FillThread(this.dataGridView1, i);
  }
}


class FillThread
{
    struct param_t
    {
        public DataGridView TheGrid;
        public int Type;
    }

    private Thread _worker;




    public FillThread(DataGridView theGrid, int type)
    {
        _worker = new Thread(ThreadProc);

        param_t param = new param_t();
        param.TheGrid = theGrid;
        param.Type = type;

        _worker.Start(param);
    }

    public void ThreadProc(object data)
    {
        param_t param = (param_t)data;

        for(int i = 0; i < 10; i++)
        {
            param.TheGrid.Rows[i].Cells[param.Type].Value = i;
        }



    }
}