某个ItemsControl与它的项源不一致
异常
原因
UI中DataGrid绑定的集合在另一个线程中增加的过快,导致两个项源不一致。解决方案是加锁。
解决
解决步骤如下:
- 加一把锁
private readonly object _busABcDatasLock = new object();
public AsyncObservableCollection<BusDataLine> BusAbcDatas { get; set; }
- 绑定时指定锁
BusAbcDatas = new AsyncObservableCollection<BusDataLine>();
BindingOperations.EnableCollectionSynchronization(BusAbcDatas,_busABcDatasLock);//在ViewModel的构造器中
- 集合新增项时锁定集合
private void AddItemToAsynList(AsyncObservableCollection<BusDataLine> list, BusDataLine item, object lockObject)
{
lock (lockObject)
{
list.Add(item);
}
}