Иногда элемент не удаляется из коллекции List, как такое может быть ? - C#

Узнай цену своей работы

Формулировка задачи:

Есть такая вот система - WPF приложение По счелчку кнопки вызывается синхронная функция, которая удаляет из List<T> элемент (.Remove(item)) После этого возникает событие NotifyCollectionChanged, в котором у удаляемого элемента обнуляется поле (через Reflection, Property.SetValue(item,null); В результате этого вызывается сеттер, в котором идет проверка, а удален ли этот элемент из коллекции List<T> методом Contains(item) Так вот первые 2-3 удаления это работает нормально, а потом элемент не удаляется из коллекции

Решение задачи: «Иногда элемент не удаляется из коллекции List, как такое может быть ?»

textual
Листинг программы
  1. public bool Remove(T item)
  2.         {
  3.             int index;
  4.             T value;
  5.  
  6.             _itemsLocker.EnterWriteLock();
  7.  
  8.             try
  9.             {
  10.                 CheckIsReadOnly();
  11.                 CheckReentrancy();
  12.  
  13.                 index = _items.IndexOf(item);
  14.                 _items.Remove(item);
  15.                 /*
  16.                 if (index < 0)
  17.                 {
  18.                     return false;
  19.                 }
  20.  
  21.                 value = _items[index];
  22.  
  23.                 _items.RemoveAt(index);
  24.                 */
  25.             }
  26.             finally
  27.             {
  28.                 _itemsLocker.ExitWriteLock();
  29.             }
  30.  
  31.             OnPropertyChanged("Count");
  32.             OnPropertyChanged("Item[]");
  33.  
  34.             //tmp debug
  35.             int ddd = _items.IndexOf(item);
  36.             bool ds2 = _items.Contains(item);
  37.  
  38.             OnCollectionChanged(NotifyCollectionChangedAction.Remove, item, index);
  39.  
  40.             return true;
  41.         }

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


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

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

8   голосов , оценка 3.625 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы