public StoragePointViewModel(StoragePoint storagePoint, IEventAggregator eventAggregator) : this() { _eventAggregator = eventAggregator; Name = storagePoint.Name; _storagePoint = storagePoint; _insertPartEvent = _eventAggregator.GetEvent <PubSubEvent <InsertPartEvent> >(); _insertPartToDeliveryEvent = _eventAggregator.GetEvent <PubSubEvent <InsertPartToDeliveryEvent> >(); _removePartEvent = _eventAggregator.GetEvent <PubSubEvent <RemovePartFromStoragePointEvent> >(); if (Thread.CurrentThread.IsBackground) { _insertPartEvent.Subscribe(OnInsertPart); _removePartEvent.Subscribe(OnRemovePart); _insertPartToDeliveryEvent.Subscribe(OnInsertPartToDelivery); } else { _insertPartEvent.Subscribe(OnInsertPart, ThreadOption.UIThread); _removePartEvent.Subscribe(OnRemovePart, ThreadOption.UIThread); _insertPartToDeliveryEvent.Subscribe(OnInsertPartToDelivery, ThreadOption.UIThread); } foreach (var part in storagePoint.Parts) { Parts.Add(new PartViewModel(part)); } }
public SubscriptionToken Subscribe(Action <TPayload> action) { regionEventPayload = x => action(x.PayLoad); var token = pubSubEvent.Subscribe(regionEventPayload, ThreadOption.PublisherThread, true, Sender.ShouldListen); Sender.Wire.Cleanup += () => pubSubEvent.Unsubscribe(token); return(token); }
public void ActionSubscribeChangeRegionContext(string regionName, Action <object> action) { PubSubEvent <object> changeRegionContextEvent = GetChangeRegionContextEvent(regionName); if (changeRegionContextEvent != null) { changeRegionContextEvent.Subscribe(action); } action(GetRegionContext(regionName)); }
public ShelfViewModel(Shelf shelf, IEventAggregator eventAggregator) : this() { _shelf = shelf; foreach (var part in shelf.Parts) { Parts.Add(new PartViewModel(part)); } _addPartEvent = eventAggregator.GetEvent <PubSubEvent <AddPartEvent> >(); _removePartEvent = eventAggregator.GetEvent <PubSubEvent <RemovePartFromShelfEvent> >(); if (Thread.CurrentThread.IsBackground) { _addPartEvent.Subscribe(OnPartAdded); _removePartEvent.Subscribe(OnPartRemoved); } else { _addPartEvent.Subscribe(OnPartAdded, ThreadOption.UIThread); _removePartEvent.Subscribe(OnPartRemoved, ThreadOption.UIThread); } }
public BenchmarkDotNetRun() { var provider = new ServiceCollection().AddMessagePipe().BuildServiceProvider(); prism = new Prism.Events.EventAggregator().GetEvent <Message>(); prismStrong = new Prism.Events.EventAggregator().GetEvent <Message>(); var mdiatr = new ServiceCollection().AddMediatR(typeof(PublishOps).Assembly).BuildServiceProvider(); medi = mdiatr.GetRequiredService <IMediator>(); p = provider.GetRequiredService <IPublisher <Message> >(); var s = provider.GetRequiredService <ISubscriber <Message> >(); keyed = provider.GetRequiredService <IPublisher <Guid, Message> >(); var keyedS = provider.GetRequiredService <ISubscriber <Guid, Message> >(); hub = Hub.Default; m = new Message(); subject = new Subject <Message>(); signalBus = SetupZenject(); easyMsgHub = new MessageHub(); for (int i = 0; i < 8; i++) { s.Subscribe(new EmptyMessageHandler()); prism.Subscribe(_ => { }); prismStrong.Subscribe(_ => { }, true); ev += _ => { }; subject.Subscribe(_ => { }); hub.Subscribe <Message>(_ => { }); keyedS.Subscribe(key, _ => { }); easyMsgHub.Subscribe <Message>(_ => { }); } signalBus.Subscribe <Message>(m => { }); signalBus.Subscribe <Message>(m => { }); signalBus.Subscribe <Message>(m => { }); signalBus.Subscribe <Message>(m => { }); signalBus.Subscribe <Message>(m => { }); signalBus.Subscribe <Message>(m => { }); signalBus.Subscribe <Message>(m => { }); signalBus.Subscribe <Message>(m => { }); }
public CompositePresentationEventSubscription(PubSubEvent <TEventArgs> @event, IObserver <TEventArgs> observer) { if (@event == null) { throw new ArgumentNullException("event"); } if (observer == null) { throw new ArgumentNullException("observer"); } this.@event = @event; this.observer = observer; @event.Subscribe(observer.OnNext, true); }
public static SubscriptionToken ShowAlbum(this PubSubEvent <UniqueAlbum> pubSubEvent, Action <UniqueAlbum> action) { return(pubSubEvent.Subscribe(action, ThreadOption.UIThread)); }
public unsafe PublishOps() { var provider = new ServiceCollection().AddMessagePipe().BuildServiceProvider(); prism = new Prism.Events.EventAggregator().GetEvent <Message>(); prismStrong = new Prism.Events.EventAggregator().GetEvent <Message>(); var mdiatr = new ServiceCollection().AddMediatR(typeof(PublishOps).Assembly).BuildServiceProvider(); medi = mdiatr.GetRequiredService <IMediator>(); p = provider.GetRequiredService <IPublisher <Message> >(); var s = provider.GetRequiredService <ISubscriber <Message> >(); keyed = provider.GetRequiredService <IPublisher <Guid, Message> >(); var keyedS = provider.GetRequiredService <ISubscriber <Guid, Message> >(); hub = Hub.Default; var px = new ServiceCollection().AddMessagePipe().BuildServiceProvider(); filter1 = px.GetRequiredService <IPublisher <Message> >(); var filter1Sub = px.GetRequiredService <ISubscriber <Message> >(); var px2 = new ServiceCollection().AddMessagePipe().BuildServiceProvider(); filter2 = px2.GetRequiredService <IPublisher <Message> >(); var filter2Sub = px2.GetRequiredService <ISubscriber <Message> >(); m = new Message(); subject = new Subject <Message>(); signalBus = SetupZenject(); easyMsgHub = new MessageHub(); asyncP = provider.GetRequiredService <IAsyncPublisher <Message> >(); asyncS = provider.GetRequiredService <IAsyncSubscriber <Message> >(); #if WinBenchmark mvvmLight = new Messenger(); mvvmLightStrong = new Messenger(); #endif toolkitStrong = new Microsoft.Toolkit.Mvvm.Messaging.StrongReferenceMessenger(); toolkitWeak = new Microsoft.Toolkit.Mvvm.Messaging.WeakReferenceMessenger(); simpleArray = new PlainAction[8]; actionDelegate = new Action[8]; interfaceArray = new IInvoke[8]; for (int i = 0; i < 8; i++) { s.Subscribe(new EmptyMessageHandler()); prism.Subscribe(lambdaRef.Delegate); prismStrong.Subscribe(_ => { }, true); ev += _ => { }; subject.Subscribe(_ => { }); hub.Subscribe <Message>(_ => { }); #if WinBenchmark UniRx.MessageBroker.Default.Receive <Message>().Subscribe(new NopObserver()); mvvmLight.Register <Message>(this, _ => { }, false); // mvvmLightStrong.Register<Message>(this, _ => { }, true); #endif keyedS.Subscribe(key, _ => { }); filter1Sub.Subscribe(new EmptyMessageHandler(), new EmptyMessageHandlerFilter()); filter2Sub.Subscribe(new EmptyMessageHandler(), new EmptyMessageHandlerFilter(), new EmptyMessageHandlerFilter()); easyMsgHub.Subscribe <Message>(_ => { }); simpleArray[i] = new PlainAction(); actionDelegate[i] = new PlainAction().DelegateAction; interfaceArray[i] = new PlainAction(); asyncS.Subscribe((_, _) => default(ValueTask)); toolkitStrong.Register <Message>(new object(), lambdaRef2.Delegate); toolkitWeak.Register <Message>(new object(), lambdaRef2.Delegate); } signalBus.Subscribe <Message>(_ => { }); signalBus.Subscribe <Message>(_ => { }); signalBus.Subscribe <Message>(_ => { }); signalBus.Subscribe <Message>(_ => { }); signalBus.Subscribe <Message>(_ => { }); signalBus.Subscribe <Message>(_ => { }); signalBus.Subscribe <Message>(_ => { }); signalBus.Subscribe <Message>(_ => { }); }
/// <summary> /// Метод подписки на событие с использованием адаптера. /// </summary> public static SubscriptionToken Subscribe <TPayload>(this PubSubEvent <TPayload> targetEvent, IEventHandler <TPayload> handler, ThreadOption threadOption) { return(targetEvent.Subscribe(handler.Handle, threadOption, true)); //true для того, чтобы handler не умирал }