Введите краткое описание своих изменений
(Обязательно)
Minor changes are by default collapsed in the page history.
No changes
The page does not exist yet.
Failed to load changes
Версия от на
Leave Collaboration
Are you sure you want to leave the realtime collaboration and continue editing alone? The changes you save while editing alone will lead to merge conflicts with the changes auto-saved by the realtime editing session.
На основе материала, приведенного по 2 ссылке. Можно реализовать удаление из ConcurrentDictionary только при определенных условиях. В данном проекте используется RemoveLinkItem, для проверки что счетчик ссылок <= 0. Но в целом можно реализовать передачу любого делегата с условием. (И производит удаление только в случае, когда условие истинно)
Таким образом получив интерфейс RemoveIf(TKey key, Func<TKey, TValue, bool> needRemove)
На основе материала, приведенного по 2 ссылке. Можно реализовать удаление из ConcurrentDictionary только при определенных условиях.
В данном проекте используется RemoveLinkItem, для проверки что счетчик ссылок <= 0.
Но в целом можно реализовать передачу любого делегата с условием. (И производит удаление только в случае, когда условие истинно)
Таким образом получив интерфейс
RemoveIf(TKey key, Func<TKey, TValue, bool> needRemove)
Возможно, в данном случае, для проверки оптимистичной блокировки было бы достаточно ReferenceEquals. (Вместо Stamp)
Т.к. Item иммутабелен.