我希望在后台线程上发生这种情况,在检索到的每个批处理结束时更新UI(绑定新数据的网格)。
每次检索结束时,我都要做一个列表.AddRange(),然后引发传递网格绑定到的公共属性名称的OnPropertyChanged事件。
最初我尝试了6次迭代,每次迭代检索100个项目。在后台运行时,UI会在前100个之后更新,但不会更新最后500个(即使数据已成功添加到viewmodel的基础列表中)。
考虑到我在编组到UI线程时遇到了一些问题,我同步运行了它,希望它能像预期的那样工作(尽管每次检索时都会阻塞UI)或者在所有检索时都阻塞UI—但不管是哪种情况,最后都会更新以显示600个项目。然而,它最终做了和我在后台运行时一样的事情——只更新前100个,不更新其余的。
下面是我在两次尝试中使用的方法,上半部分是注释掉的背景版本。
我做错什么了?
public void StartDataStream()
{
if (this._cars == null) this._cars = new List<Car>();
this._cars.AddRange(this.GetCarList(eq,s,e));
base.OnPropertyChanged("Cars");
this.iterations += 1;
if (iterations < 6) StartDataStream();
}