某個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);
}
}