Пример #1
0
        /// <summary>
        /// Notify the observers
        /// </summary>
        /// <param name="message"></param>
        public override void  HandleMessage(IMessageIOIO message)
        {
            // messages must support notification to do notification...
            IMessageNotificationIOIO notifier = message as IMessageNotificationIOIO;

            if (notifier != null)
            {
                foreach (IObserverIOIO observer in Interested_)
                {
                    try {
                        notifier.Notify(observer);
                    } catch (Exception e) {
                        LOG.Error("Caught exception ", e);
                    }
                }
            }
        }
        /// <summary>
        /// This method notifies the observers in parallel and does not wait.
        /// </summary>
        /// <param name="message"></param>
        public override void HandleMessage(IMessageIOIO message)
        {
            // messages must support notification to do notification...
            IMessageNotificationIOIO notifier = message as IMessageNotificationIOIO;

            if (notifier != null)
            {
                foreach (IObserverIOIO observer in Interested_)
                {
                    try {
                        // copy the loop value so it doesn't get replaced
                        IObserverIOIO taskObserver = observer;
                        Task.Factory.StartNew(() => notifier.Notify(taskObserver));
                    }
                    catch (Exception e)
                    {
                        LOG.Error("Caught exception ", e);
                    }
                }
            }
        }