Иногда элемент не удаляется из коллекции 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д