Элемент с тем же ключом уже был добавлен Xceed - PullRequest
0 голосов
/ 05 февраля 2020

Иногда мы получаем исключение из Xceed Grid:

Мы подозреваем, что могут быть проблемы с параллелизмом, но могут быть и другие причины. Как наш класс не реализует GetHashCode / Equals. Кто-нибудь еще сталкивался с такой проблемой?

У нас есть блокировка блока кода, который фактически добавляет и удаляет объекты из списка.

System.Reflection.TargetInvocationException: исключение имеет был брошен целью вызова. ---> System.ArgumentException: элемент с тем же ключом уже был добавлен. в System.ThrowHelper.ThrowArgumentException (ресурс ExceptionResource) в System.Collections.Generi c .Dictionary 2.Insert(TKey key, TValue value, Boolean add) at Xceed.Wpf.DataGrid.CustomItemContainerGenerator.CreateGroupListFromCollection(IList collection, GeneratorNode parentNode) at Xceed.Wpf.DataGrid.CustomItemContainerGenerator.HandleSameLevelGroupAddition(GeneratorNode firstChild, Int32& countAdded, NotifyCollectionChangedEventArgs e) at Xceed.Wpf.DataGrid.CustomItemContainerGenerator.OnGroupsChanged(Object sender, NotifyCollectionChangedEventArgs e) at Xceed.Wpf.DataGrid.CustomItemContainerGenerator.OnReceiveWeakEvent(Type managerType, Object sender, EventArgs e) at Xceed.Wpf.DataGrid.CustomItemContainerGenerator.System.Windows.IWeakEventListener.ReceiveWeakEvent(Type managerType, Object sender, EventArgs e) at System.Windows.WeakEventManager.ListenerList.DeliverEvent(Listener& listener, Object sender, EventArgs args, Type managerType) at System.Windows.WeakEventManager.ListenerList 1.DeliverEvent (отправитель объекта, EventArgs e, тип managerType) в System. Windows .WeakEventManager.DeliverEvent (отправитель объекта , EventArgs арг) при System.Collections.Specialized.CollectionChangedEventManager.OnCollectionChanged (Object отправителя, NotifyCollectionChangedEventArgs арг) в System.Collections.ObjectModel.ReadOnlyObservableCollection 1.OnCollectionChanged(NotifyCollectionChangedEventArgs args) at System.Collections.ObjectModel.ReadOnlyObservableCollection 1.HandleCollectionChanged (Object отправителя, NotifyCollectionChangedEventArgs е) при System.Collections.Specialized.NotifyCollectionChangedEventHandler .Invoke (Отправитель объекта, NotifyCollectionChangedEventArgs e) в System.Collections.ObjectModel.ObservableCollection 1.OnCollectionChanged(NotifyCollectionChangedEventArgs e) at System.Collections.ObjectModel.ObservableCollection 1.InsertItem (индекс Int32, элемент T) в System.Collections.ObjectModel.Collection 1.Insert(Int32 index, T item) at Xceed.Wpf.DataGrid.DataGridCollectionViewGroup.InsertGroup(Int32 index, DataGridCollectionViewGroup group) at Xceed.Wpf.DataGrid.DataGridCollectionViewGroup.CreateSubGroup(Object groupName, Int32 level, ObservableCollection1 groupByList, List1 groupSortComparers) at Xceed.Wpf.DataGrid.DataGridCollectionViewGroup.GetGroup(RawItem rawItem, Int32 level, CultureInfo culture, ObservableCollection1 groupByList, List1 groupSortComparers) at Xceed.Wpf.DataGrid.DataGridCollectionView.GetRawItemNewGroup(RawItem rawItem) at Xceed.Wpf.DataGrid.DataGridCollectionView.AddRawItemInGroup(RawItem rawItem) at Xceed.Wpf.DataGrid.DataGridCollectionView.AddSourceItem(Int32 startIndex, IList items, Int32 newSourceItemCount) at Xceed.Wpf.DataGrid.DataGridCollectionView.ExecuteSourceItemOperation(DeferredOperation deferredOperation, Boolean& refreshForced) at Xceed.Wpf.DataGrid.DataGridCollectionViewBase.ExecuteOrQueueSourceItemOperation(DeferredOperation deferredOperation) at Xceed.Wpf.DataGrid.DataGridCollectionViewBase.OnItemsSourceCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e) at Xceed.Wpf.DataGrid.DataGridCollectionViewBase.OnReceiveWeakEvent(Type managerType, Object sender, EventArgs e) at Xceed.Wpf.DataGrid.DataGridCollectionViewBase.System.Windows.IWeakEventListener.ReceiveWeakEvent(Type managerType, Object sender, EventArgs e) at System.Windows.WeakEventManager.ListenerList.DeliverEvent(Listener& listener, Object sender, EventArgs args, Type managerType) at System.Windows.WeakEventManager.ListenerList 1.DeliverEvent (Событие отправителя объекта, , Введите managerType) в System. Windows .WeakEventManager.DeliverEvent (Отправитель объекта, аргументы EventArgs) в System.Collections.Specialized.Collectio nChangedEventManager.OnCollectionChanged (Отправитель объекта, аргументы NotifyCollectionChangedEventArgs) в System.Collections.ObjectModel.ObservableCollection 1.OnCollectionChanged(NotifyCollectionChangedEventArgs e) at System.Collections.ObjectModel.ObservableCollection 1.InsertItem (индекс Int32, элемент T) в System.Collections.ObjectModel).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...