【发布时间】:2013-01-22 19:58:43
【问题描述】:
如果我用 eventHandler 订阅同一个事件 3 次,会不会有问题? 例如
a.SomethingChanged += new EventHandler(ChangeHandler);
a.SomethingChanged += new EventHandler(ChangeHandler);
a.SomethingChanged += new EventHandler(ChangeHandler);
这是否会导致 ChangeHandler 被调用 3 次而不是 1 次?处理这个问题的最佳方法是什么?
请注意,这些冗余不是在一起,而是代码路径的不同区域。
类似地,取消订阅未注册的活动是否存在问题? 例如
a.SomethingChanged -= new EventHandler(ChangeHandler); //ChangeHandler was never registered
【问题讨论】:
-
看到这个问题:stackoverflow.com/questions/817592/…,基本上,是的,但你可以避免它。
-
试试看会发生什么!不过我很好奇,当每个执行路径都包含相同的结果时,它们背后的想法是什么?
-
因此,如果尚未注册,基本上没有取消订阅 (-=) 的副作用。对吗?
-
为什么要多次订阅同一个事件?你到底想解决什么问题?
-
有多个可能需要它的代码路径。所以我想避免检查它是否已经一次又一次地注册。谢谢
标签: c# event-handling