Иногда элемент не удаляется из коллекции List, как такое может быть ? - C#
Формулировка задачи:
Есть такая вот система -
WPF приложение
По счелчку кнопки вызывается синхронная функция, которая удаляет из List<T> элемент (.Remove(item))
После этого возникает событие NotifyCollectionChanged, в котором у удаляемого элемента обнуляется поле (через Reflection, Property.SetValue(item,null);
В результате этого вызывается сеттер, в котором идет проверка, а удален ли этот элемент из коллекции List<T> методом Contains(item)
Так вот первые 2-3 удаления это работает нормально, а потом элемент не удаляется из коллекции
Решение задачи: «Иногда элемент не удаляется из коллекции List, как такое может быть ?»
textual
Листинг программы
public bool Remove(T item) { int index; T value; _itemsLocker.EnterWriteLock(); try { CheckIsReadOnly(); CheckReentrancy(); index = _items.IndexOf(item); _items.Remove(item); /* if (index < 0) { return false; } value = _items[index]; _items.RemoveAt(index); */ } finally { _itemsLocker.ExitWriteLock(); } OnPropertyChanged("Count"); OnPropertyChanged("Item[]"); //tmp debug int ddd = _items.IndexOf(item); bool ds2 = _items.Contains(item); OnCollectionChanged(NotifyCollectionChangedAction.Remove, item, index); return true; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д