我使用以下命令来订阅eventAgrregator:eventAggregator.GetEvent.subscrinbe(..)
如果我使用lambda表达式,它可能不会被调用,因为eventAggregator使用弱引用,并且为什么它被处理掉。 但是,如果提供方法名称,则可行。
你能解释一下吗? (注意 - 不收集调用eventaggregator.getevent的对象)
答案 0 :(得分:0)
行。我想我发现了这个问题。 在我的lambda表达式中,我错误地使用了一个局部变量(。
它使编译器创建一个包含变量的新对象,并将其作为eventAggregator的目标对象提供。 然后这个对象被GC删除,因为eventAggregator使用弱引用。
因此,只要我不在lambda表达式中使用局部变量,目标将成为我的原始对象,并且它将正常工作。