我试图让我的 IEventAggregator 允许我在一个模块中发布和事件并在另一个模块中捕获它。我在一个模块/项目中尝试了下面的代码,效果很好。只有当我有一个模块/项目发布事件而另一个订阅它时,它才会失败。
我已经通过统一将我的 IEventAggregator 注入到两个模块中。
我有 3 个项目,其中两个有模块(称为 A 和 B),一个只是一个普通的类库(称为接口)
在类库接口中有这样的代码:
public class RandomTestEvent : CompositePresentationEvent<string>
{
}
在模块A中,按钮单击命令中有此代码(这实际上是在项目的视图模型中):
var evt2 = _eventAggregator.GetEvent<RandomTestEvent>();
evt2.Publish("Testing");
在模块B中有以下代码:
public void Initialize()
{
var evt2 = _eventAggregator.GetEvent<RandomTestEvent>();
evt2.Subscribe(OnRandomThingDone);
}
private void OnRandomThingDone(string obj)
{
MessageBox.Show("Random Event Done With: " + obj);
}
我可以追踪并看到订阅被调用。当我看到 Publish 被调用时,调试器说Subscriptions = 1
(所以它知道订阅已经完成,所以我似乎没有 2 个不同的 IEventAggregator 实例。)
但是 OnRandomThingDone 在 Publish 之后永远不会被调用。
任何想法为什么?(我需要发布更多代码吗?如果需要,请告诉我。)