Я прочитал код метода AddOrUpdate в Ссылочный источник и увидел, что, если oldValue и newValue равны, метод все равно выполнит обновление. Это правда? Я правильно понял? Из-за этого метод всегда блокирует.
update: Когда я увидел код метода AddOrUpdate, я подумал: «Почему нам нужно использовать TryUpdate с блокировкой, если oldValue равно newValue? Мы можем проверить уравнениеи вернуть, если значения равны "Из-за этого я задал этот вопрос.
Я понял, почему этот метод всегда обновляет или добавляет, не проверяя равно oldValue и newValue. TValue - это объект, и мы не можем сравнить его без перезаписи метода equals.
Из-за этого, если вы хотите добавить AddOrUpdate без блокировки вашего ConcurrentDictionary, когда oldValue и newValue равны, вам нужно создать метод с вашими классами. Я не знаю, как вы можете сделать это с помощью универсального.