public void SubscribeToComponentStateRequest <T>(Action <ComponentStateRequest <T> > componentStateRequestHandler, ComponentId componentId = ComponentId.UNDEFINED, ThreadType threadType = ThreadType.PublisherThread) where T : RequestedComponentState { Predicate <ComponentStateRequest <T> > filter = null; if (componentId != ComponentId.UNDEFINED) { filter = chg => chg.Id == componentId; } _eventAggregator.GetEvent <ComponentStateRequestEvent <ComponentStateRequest <T> > >().Unsubscribe(componentStateRequestHandler); _eventAggregator.GetEvent <ComponentStateRequestEvent <ComponentStateRequest <T> > >().Subscribe(componentStateRequestHandler, threadType.ToThreadOption(), true, filter); }
public void SubscribeToComponentStateChange <T>(Action <ComponentStateChange <T> > componentStateChangeHandler, ComponentId componentId = ComponentId.UNDEFINED, ThreadType threadType = ThreadType.PublisherThread) where T : ComponentState { Predicate <ComponentStateChange <T> > filter = null; if (componentId != ComponentId.UNDEFINED) { filter = chg => chg.Id == componentId; } _eventAggregator.GetEvent <ComponentStateChangeEvent <ComponentStateChange <T> > >().Unsubscribe(componentStateChangeHandler); _eventAggregator.GetEvent <ComponentStateChangeEvent <ComponentStateChange <T> > >().Subscribe(componentStateChangeHandler, threadType.ToThreadOption(), true, filter); if (componentId != ComponentId.UNDEFINED) { var currentComponentState = CurrentComponentState <T>(componentId); if (currentComponentState != null) { componentStateChangeHandler(currentComponentState.ToComponentStateChange()); } } }