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