В моем приложении мне нужно будет проверить, находится ли 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
событие все еще выполняется?