protected virtual void HandlePropertyEvents() { lock (_waitingLock) { _waitingForPropChangedDispatcher = false; } PropertyChangingEventArgs[] cArgs = _propChangingQueue.DequeueCurrentQueue(); if (cArgs != null && PropertyChanging != null) { System.Diagnostics.Debug.WriteLine(string.Format("HandlePropertyEvents for {0} changing events.", cArgs.Length)); foreach (PropertyChangingEventArgs arg in cArgs) { PropertyChanging(this, arg); } } PropertyChangedEventArgs[] args = _propChangedQueue.DequeueCurrentQueue(); if (args != null && PropertyChanged != null) { System.Diagnostics.Debug.WriteLine(string.Format("HandlePropertyEvents for {0} changed events.", args.Length)); foreach (PropertyChangedEventArgs arg in args) { PropertyChanged(this, arg); } } }
public T[] DequeueCurrentQueue() { lock (_dequeueLockObj) { if (_queueOut.Count == 0) { FlipQueues(); } return(_queueOut.DequeueCurrentQueue()); } }
private void HandleItemChanging() { lock (_waitingLock) { _waitingForItemChangingDispatcher = false; } ItemPropertyChangedEventArgs <T>[] args = _itemChangingQueue.DequeueCurrentQueue(); if (args != null) { System.Diagnostics.Debug.WriteLine(string.Format("HandleItemPropertyChanging for {0} events.", args.Length)); foreach (ItemPropertyChangedEventArgs <T> arg in args) { ItemPropertyChanging(this, arg); } } }
/* * private void HandleFullCollectionChanged() * { * lock (_waitingLock) * { * _waitingForCollChangedDispatcher = false; * } * CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); * } */ /* * private void HandleCollectionChanged() * { * lock (_waitingLock) * { * _waitingForCollChangedDispatcher = false; * } * NotifyCollectionChangedEventArgs[] args = _collChangedQueue.DequeueCurrentQueue(); * if (args != null) * { * System.Diagnostics.Debug.WriteLine(string.Format("HandleCollectionChanged for {0} events.", args.Length)); * foreach (NotifyCollectionChangedEventArgs arg in args) * CollectionChanged(this, arg); * } * } */ private void HandlePropertyChanged() { lock (_waitingLock) { _waitingForPropChangedDispatcher = false; } PropertyChangedEventArgs[] args = _propChangedQueue.DequeueCurrentQueue(); if (args != null) { System.Diagnostics.Debug.WriteLine(string.Format("HandlePropertyChanged for {0} events.", args.Length)); foreach (PropertyChangedEventArgs arg in args) { PropertyChanged(this, arg); } } }