Exemple #1
0
 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);
     }
 }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        /// <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);
            }