Example #1
0
 /// <summary>
 /// 发布消息。
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="queue">是否放队列里。</param>
 /// <param name="arguments">消息的参数。</param>
 public static void Publish <T>(bool queue, params object[] arguments) where T : ISubject
 {
     if (subscribes.TryGetValue(typeof(T), out SubjectCache cache))
     {
         cache.Subject.Initialize(arguments);
         var subscribers = cache.Subject.Filter == null ?
                           cache.Subscribers : cache.Subscribers.Where(s => cache.Subject.Filter(s));
         SubscribePublisher.Publish(cache.Subject, subscribers, queue);
     }
 }
Example #2
0
        /// <summary>
        /// 静态方法,发布订阅消息给订阅消息的订阅者。
        /// </summary>
        /// <param name="subject">订阅的主题。</param>
        /// <param name="subscribers">订阅该主题的订阅者列表。</param>
        internal static void Publish(ISubject subject, ICollection <ISubscriber> subscribers)
        {
            //if (subject.Thread)
            //{
            //    //开启一个线程来发布消息
            //    var publisher = new SubscribePublisher(subject, subscribers);
            //    var thread = new Thread(new ThreadStart(publisher.Publish));
            //    thread.IsBackground = true;
            //    thread.Start();
            //}
            //else
            //{
            var publisher = new SubscribePublisher(subject, subscribers);

            publisher.Publish();
            //}
        }