Beispiel #1
0
        private void ProcessEvents(object sender, DoWorkEventArgs e)
        {
            RemoveItems = new List <IEventListener>();
            while (!_BackgroundWorker.CancellationPending)
            {
                IAction action = Actions.Take();
                switch (action.GetActionType())
                {
                case ActionType.OfferEvent:
                    OfferEventAction offerEventAction = (OfferEventAction)action;
                    ProcessOfferEventAction(offerEventAction);
                    break;

                case ActionType.AddListener:
                    AddListenerAction addListenerAction = (AddListenerAction)action;
                    ProcessAddListenerAction(addListenerAction);
                    break;

                case ActionType.RemoveListener:
                    RemoveListenerAction removeListenerAction = (RemoveListenerAction)action;
                    ProcessRemoveListenerAction(removeListenerAction);
                    break;
                }
            }
            e.Cancel = true;
        }
Beispiel #2
0
 private void ProcessAddListenerAction(AddListenerAction addListenerAction)
 {
     if (addListenerAction != null)
     {
         IEventListener eventListener = addListenerAction.GetEventListener();
         if (eventListener != null)
         {
             List <WeakReference <IEventListener> > weakReferences;
             foreach (EventType eventType in eventListener.GetNotifyTypes())
             {
                 if (!EventTypesToListeners.TryGetValue(eventType, out weakReferences))
                 {
                     weakReferences = new List <WeakReference <IEventListener> >();
                 }
                 weakReferences.Add(new WeakReference <IEventListener>(eventListener));
                 EventTypesToListeners.Add(eventType, weakReferences);
             }
         }
     }
 }