多线程应用程序中的数据绑定datagridview

dyn*_*ser 3 c# multithreading datagridview winforms

我试图使用多线程从计时器数据绑定我的数据网格视图.我们需要它来显示实时数据.

我使用的代码是 -

private void Form1_Load(object sender, EventArgs e)
    {
        dt = JobManager.GetTodaysJobs();
        trd = new Thread(StartTimer);
        trd.Start();
    }

    void StartTimer()
    {
        timer1.Start();
        LoadData();
    }

    void LoadData()
    {
        dt = JobManager.GetTodaysJobs();
        dataGridView1.AutoGenerateColumns = false;
        dataGridView1.DataSource = dt;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        LoadData();
    }
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误 -

跨线程操作无效:控制'dataGridView1'从其创建的线程以外的线程访问.

我有什么想法可以解决这个问题吗?

干杯

No *_*ame 6

您无法从不是这些对象的创建者的线程更新UI元素.

像这样改变你的方法:

void LoadData()
{
    if (InvokeRequired)
                Invoke(new MethodInvoker(InnerLoadData));
}

void InnerLoadData()
{
    dt = JobManager.GetTodaysJobs();
    dataGridView1.AutoGenerateColumns = false;
    dataGridView1.DataSource = dt;
}
Run Code Online (Sandbox Code Playgroud)