2011-08-31 35 views
1

如果我有以下Microsoft.Practices.Prism.Events.IEventAggregator实例:IEventAggregator会多次订阅吗?

eventAggregator.GetEvent<MyEvent>.Subscribe(SomeMethod); 

和上面的代码行被击中多次,确实EventAggregator检查是否已经有一个订阅新资料还是将继续订阅并且多次(每次)发布一个Publish()?

回答

3

它应该多次订阅。 Subscribe方法会返回一个SubscriptionToken,即使您多次使用调用Subscribe多次使用相同的方法,该方法也应该是不同的,如果您选择这样做,可以删除不同的参考。

+0

如果你有一个基类,上面有5个孩子继​​承,上面的代码将订阅5次。这是否意味着如果事件一旦发布,它将执行5次或一次? – 4thSpace

+0

@ 4thSpace:如果五种类型中的每一种都有一个实例,那么当事件发布时,它将发布五次。请记住,处理程序绑定到*实例*而不是*类型*。如果您创建了一个静态方法并将该处理程序设置为静态方法,那么它只会被注册一次,静态构造函数对于该类型是本地的,而不是派生类型,并且只能执行一次。 – casperOne