protected void DeliverEventToList(object sender, EventArgs args, ListenerList list) { for (int i = 0; i < list.Count; i++) { IWeakEventListener listener = list[i]; listener.ReceiveWeakEvent(GetType(), sender, args); } }
protected void DeliverEventToList(object sender, EventArgs args, ListenerList list) { if (list == null) { throw new ArgumentNullException("list"); } for (int i = 0; i < list.Count; i++) { IWeakEventListener listener = list[i]; listener.ReceiveWeakEvent(GetType(), sender, args); } }
/// <summary> /// The method that handles the <see cref="INotifyPropertyChanged.PropertyChanged"/> event. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="args">A <see cref="PropertyChangedEventArgs"/> that /// contains the event data.</param> private void PropertyChanged(object sender, PropertyChangedEventArgs args) { List <WeakReference> list = _list[args.PropertyName]; if (list != null) { // We have the listeners. Deal with them foreach (WeakReference item in list) { IWeakEventListener eventItem = item.Target as IWeakEventListener; if (eventItem != null && item.IsAlive) { eventItem.ReceiveWeakEvent(this.GetType(), sender, args); } } } }
protected override void Handle(object sender, E eventArgs) { // we use a flag coz if the listener returns false we need to remove it bool _removeHandlerFlag = true; IWeakEventListener _listenerObj = Listener; // if we recieve a false signal then if (_listenerObj != null) { _removeHandlerFlag = !_listenerObj.ReceiveWeakEvent(typeof(H), sender, eventArgs); } // we remove the handler if (_removeHandlerFlag) { Dispose(); } }
internal bool DeliverEvent(ref Listener listener, object sender, EventArgs args, Type managerType) { object target = listener.Target; bool entryIsStale = (target == null); if (!entryIsStale) { if (listener.HasHandler) { EventHandler handler = (EventHandler)listener.Handler; if (handler != null) { handler(sender, args); } } else { // legacy (4.0) IWeakEventListener iwel = target as IWeakEventListener; if (iwel != null) { bool handled = iwel.ReceiveWeakEvent(managerType, sender, args); // if the event isn't handled, something is seriously wrong. This // means a listener registered to receive the event, but refused to // handle it when it was delivered. Such a listener is coded incorrectly. if (!handled) { Invariant.Assert(handled, SR.Get(SRID.ListenerDidNotHandleEvent), SR.Get(SRID.ListenerDidNotHandleEventDetail, iwel.GetType(), managerType)); } } } } return(entryIsStale); }