public bool Remove(string Name) { lock (_Triggers) { if (!_Triggers.ContainsKey(Name)) { return(false); } var trigger = _Triggers[Name]; var is_removed = _Triggers.Remove(Name); CollectionChanged.ThreadSafeInvoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, new { trigger })); return(is_removed); } }
public EventsTrigger this[string Name] { get { lock (_Triggers) return(_Triggers.GetValue(Name)); } set { lock (_Triggers) if (!_Triggers.ContainsKey(Name)) { _Triggers.Add(Name, value); CollectionChanged.ThreadSafeInvoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, new { value })); } else { var old_value = _Triggers[Name]; _Triggers[Name] = value; CollectionChanged.ThreadSafeInvoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, value, old_value)); } } }
private void OnCollectionChanged(object Sender, NotifyCollectionChangedEventArgs E) => CollectionChanged?.ThreadSafeInvoke(_Collection, E);