如何通过另一个线程更新绑定到datagridview的dataset.datatable

时间:2017-12-12 19:01:05

标签: c# .net multithreading datagridview

您好我有一个包含几个表的数据集。 其中一个表绑定到一个绑定源,然后绑定到datagridview。

数据集表在通过http

获取数据时通过单个后台线程更新

这显然会导致datagridview在从不同的线程更新时抛出交叉线程错误。

我的问题是如何在不进行完全重写的情况下解决这个问题?我意识到我可以让UI线程从后台线程创建的某种缓冲区更新数据集,但那又开始了,我想检查一下我没有更简单的方法。我在这里看到的大多数例子似乎都需要重新开始。

1 个答案:

答案 0 :(得分:1)

我假设你没有使用async / await。

您可以使用Invoke()在UI线程上运行某些内容。

Task.Run(new Action(() =>
{
    // << do http call >>

    this.Invoke(new Action(() =>
    {
        //manipulate grid here.....
    }));
}));

理想情况下,您将使用async / await。使用Task.Run运行IO绑定代码是一种浪费。