Prism EventAggregator订阅Lambda表达式与方法名称

时间:2015-11-02 18:49:26

标签: c# lambda prism eventaggregator

我使用以下命令来订阅eventAgrregator:eventAggregator.GetEvent.subscrinbe(..)

如果我使用lambda表达式,它可能不会被调用,因为eventAggregator使用弱引用,并且为什么它被处理掉。 但是,如果提供方法名称,则可行。

你能解释一下吗? (注意 - 不收集调用eventaggregator.getevent的对象)

1 个答案:

答案 0 :(得分:0)

行。我想我发现了这个问题。 在我的lambda表达式中,我错误地使用了一个局部变量(。

它使编译器创建一个包含变量的新对象,并将其作为eventAggregator的目标对象提供。 然后这个对象被GC删除,因为eventAggregator使用弱引用。

因此,只要我不在lambda表达式中使用局部变量,目标将成为我的原始对象,并且它将正常工作。