【问题标题】:Prism EventAggregator subscribe executing twicePrism EventAggregator 订阅执行两次
【发布时间】:2015-09-28 09:42:59
【问题描述】:

我有与这篇帖子类似的问题Prism CompositePresentationEvent fires twice

我的问题是Publish 只触发了一次,但Subscribe 中的代码执行了两次。

这是我的发布代码。

EventAggregator.GetEvent<PubSubEvent<HardwareLoaded>>().Publish(new HardwareLoaded() { HardwareOK = _HardwareOK });

还有订阅代码。

IEventAggregator.GetEvent<PubSubEvent<HardwareLoaded>>().Subscribe(x =>
{
    if (!x.HardwareOK)
    {
        MessageBox.Show("There was an issue loading hardware. See Log");
    }

    LoadingVisibility = Visibility.Collapsed;                
});

我在PublishSubscribe 都放了一个断点,可以看到发布只触发一次,但订阅代码触发两次。这由显示两次的消息框支持。 我已经搜索了任何其他发布代码,但没有找到。

有什么想法吗?

【问题讨论】:

  • 传递给 Subscribe 的 lambda 被调用了一次,这我们知道,但可能对 Subscribe 的调用已经被调用了两次?
  • 您在哪里声明了订阅代码?会不会是你的代码调用了两次?
  • @Bijington 啊,这很重要,所以它实际上订阅了两次。我会检查一下。

标签: c# prism


【解决方案1】:

确保Subscribe 方法只被调用一次。

如果它被调用两次,同一个事件将触发同一个回调,就像有完全不同的处理程序对同一个事件做出反应一样。

【讨论】:

  • 已排序,感谢您和 Bijington。我正在订阅视图模型的构造函数。构造函数代码实际上被调用了两次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
相关资源
最近更新 更多