public void SetValue(BindingActionValue currentValue, object newValue, IBindingPathMembers pathMembers) { _path = pathMembers.Path; //it's normal here. lock (this) { if (_currentValue != null && Equals(currentValue.Member, _currentValue.Member) && Equals(_currentValue.MemberSource.Target, currentValue.MemberSource.Target)) { SetValue(newValue, pathMembers); } else { UnsubscribeEventHandler(); currentValue.TrySetValue(new object[] { this }, out _subscriber); if (_subscriber != null) { if (_path.IsDebuggable) { DebugInfo($"Binding subscribed to event: '{pathMembers.LastMember.Path}'", new object[] { pathMembers }); } _currentValue = currentValue; SetValue(newValue, pathMembers); } } } }
public void SetValue(BindingActionValue currentValue, object newValue) { //it's normal here. lock (this) { if (_currentValue != null && Equals(currentValue.Member, _currentValue.Member) && Equals(_currentValue.MemberSource.Target, currentValue.MemberSource.Target)) { SetValue(newValue); } else { UnsubscribeEventHandler(); currentValue.TrySetValue(new object[] { this }, out _subscriber); if (_subscriber != null) { _currentValue = currentValue; SetValue(newValue); } } } }