Как определить, находится ли ObservableCollection в CollectionChanged Event? - PullRequest
0 голосов
/ 01 мая 2018

В моем приложении мне нужно будет проверить, находится ли ObservableCollection в CollectionChanged Событии, и если да, я воздержусь от изменения коллекции.

Причина, по которой мне нужно это сделать, заключается в том, что иногда мое приложение запускает событие добавления или удаления в быстрой последовательности, что даже до того, как предыдущее CollectionChanged событие будет завершено, следующее событие модификации уже наступает. Если это произойдет, тогда я получу

Невозможно изменить ObservableCollection во время события CollectionChanged

System: System.InvalidOperationException
Cannot change ObservableCollection during a CollectionChanged event.
   at System.Collections.ObjectModel.ObservableCollection`1.CheckReentrancy()
   at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
   at System.Collections.ObjectModel.Collection`1.System.Collections.IList.Add(Object value)
   at Syncfusion.Data.CollectionViewAdv.CommitNew()
   at Syncfusion.UI.Xaml.Grid.GridAddNewRowController.CommitAddNew(Boolean changeState)
   at Syncfusion.UI.Xaml.Grid.GridSelectionController.ProcessSourceCollectionChanged(NotifyCollectionChangedEventArgs e, CollectionChangedReason reason)
   at Syncfusion.UI.Xaml.Grid.GridModel.OnSourceCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
   at Syncfusion.Data.CollectionViewAdv.RaiseSourceCollectionChangedEvent(NotifyCollectionChangedEventArgs args)
   at Syncfusion.Data.CollectionViewAdv.SourceNotifyCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
   at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
   at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
   at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)

В такой ситуации мое приложение может отклонить последующее событие изменения, чтобы избежать сбоя.

Как на самом деле сказать, что предыдущее CollectionChanged событие все еще выполняется?

1 Ответ

0 голосов
/ 17 сентября 2018

Мне, наконец, удалось воспроизвести проблему в небольшом примере - выясняется, что это ошибка стороннего компонента (Syncfusion).

Я обратился в службу поддержки за помощью

...