protected virtual void ForceValue(T value, ValueAssureDelegate <T> valueAssureDelegate = null) { var oldValue = ActualValue; lock (_locker) { ActualValue = value; } valueAssureDelegate?.Invoke(this, oldValue); }
public virtual void SetValue(T value, ValueAssureDelegate <T> valueAssureDelegate = null) { lock (_locker) { if (!Equals(tempValue, value)) { tempValue = value; setCounter = 1; } else if (setCounter < assuranceCounter) { setCounter++; } if (setCounter == assuranceCounter) { if (!Equals(ActualValue, value)) { ForceValue(value, valueAssureDelegate); } setCounter++; } } }