Пример #1
0
        public void Publish(MessengerMessage message, Type messageType)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            List <BaseSubscription> toNotify = null;

            lock (this)
            {
                /*
                 *              MvxTrace.Trace("Found {0} subscriptions of all types", _subscriptions.Count);
                 *              foreach (var t in _subscriptions.Keys)
                 *              {
                 *                      MvxTrace.Trace("Found  subscriptions for {0}", t.Name);
                 *              }
                 */
                Dictionary <Guid, BaseSubscription> messageSubscriptions;
                if (_subscriptions.TryGetValue(messageType, out messageSubscriptions))
                {
                    //MvxTrace.Trace("Found {0} messages of type {1}", messageSubscriptions.Values.Count, typeof(TMessage).Name);
                    toNotify = messageSubscriptions.Values.ToList();
                }
            }

            if (toNotify == null || toNotify.Count == 0)
            {
                //Console.WriteLine("Nothing registered for messages of type {0}", messageType.Name);
                return;
            }

            var allSucceeded = true;

            foreach (var subscription in toNotify)
            {
                allSucceeded &= subscription.Invoke(message);
            }

            if (!allSucceeded)
            {
                //Console.WriteLine("One or more listeners failed - purge scheduled");
                SchedulePurge(messageType);
            }
        }
Пример #2
0
 public void Publish(MessengerMessage message)
 {
     Publish(message, message.GetType());
 }