/// <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); } } } }