如何判断 ObservableCollection 现在是否在 CollectionChanged 事件中?



在我的应用程序中,我需要检查ObservableCollection现在是否在CollectionChanged事件中,如果是,我将避免修改集合。

我需要这样做的原因是,有时我的应用程序会快速连续触发添加或删除事件,甚至在上一个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事件仍在执行?

我终于设法在一个小样本中重现了这个问题——事实证明这是第三方组件(Syncfusion(中的一个错误。

我已联系支持人员寻求帮助

相关内容

  • 没有找到相关文章

最新更新