protected virtual void OnCollectionChanged(DictionaryChangedEventArgs <TKey, TValue> changeAction) { var tasks = new List <Task> { Task.Run(() => CollectionChanged?.Invoke(this, changeAction)) }; if (changeAction.Action != NotifyCollectionChangedAction.Reset && _observers.TryGetValue(changeAction.Key, out var observers)) { tasks.AddRange(observers.Select(o => Task.Run(() => o.OnEventOccur(changeAction)))); } Task.WaitAll(tasks.ToArray()); }
public void OnEventOccur(DictionaryChangedEventArgs <TKey, TValue> args) { _action.Invoke(args); }