您好我有一个包含几个表的数据集。 其中一个表绑定到一个绑定源,然后绑定到datagridview。
数据集表在通过http
获取数据时通过单个后台线程更新这显然会导致datagridview在从不同的线程更新时抛出交叉线程错误。
我的问题是如何在不进行完全重写的情况下解决这个问题?我意识到我可以让UI线程从后台线程创建的某种缓冲区更新数据集,但那又开始了,我想检查一下我没有更简单的方法。我在这里看到的大多数例子似乎都需要重新开始。
答案 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绑定代码是一种浪费。