private void SendChangeEvents(IEnumerable <KindAndKey> affectedItems) { var copyOfHandlers = FlagChanged; if (copyOfHandlers == null) { return; } var sender = this; foreach (var item in affectedItems) { if (item.Kind == DataModel.Features) { var eventArgs = new FlagChangeEvent(item.Key); _taskExecutor.ScheduleEvent(eventArgs, copyOfHandlers); } } }
internal void OnFlagChanged(object sender, FlagChangeEvent eventArgs) { if (eventArgs.Key != _flagKey) { return; } var newValue = _evaluateFn(_flagKey, _user); LdValue oldValue = LdValue.Null; bool changed = false; lock (_valueLock) { if (!_value.Equals(newValue)) { changed = true; oldValue = _value; _value = newValue; } } if (changed) { _handler(sender, new FlagValueChangeEvent(_flagKey, oldValue, newValue)); } }