Иногда элемент не удаляется из коллекции 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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы