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