Я использую ConcurrentDictionary, который содержит строковый ключ и значение типа, который содержит свойства.
Я хочу обновить некоторые свойства значения потокобезопасным способом. Я много искал, но не смог найти решения, связанного с этой проблемой * 1013. *.
Существуют такие методы, как TryUpdate и AddOrUpdate, но они по существу заменяют предыдущее значение новым.
Каков наилучший способ установить свойство value без его замены?
Я думаю, что это должно быть сделано так:
ValueType oldVal = dict[key];
ValueType newVal = oldVal;
if (condition)
{
newVal.prop1 = foo;
newVal.prop2 = bar;
}
if (dict.TryUpdate(key, newVal, oldVal) == true)
Success;
else
Failure; //Another thread modified value first
Есть ли лучший способ?