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