从内存的角度来看(在使用后删除添加的处理程序等),WithEvents
和Handles
的使用率是否优先于RemoveHandler
和AddHandler
?
相关的Stack Overflow问题是 Event handler and memory leaks 。
答案 0 :(得分:5)
这取决于你想要达到的目标。如果你有几个事件处理程序必须在表单/对象的生命周期中处理各种控件的事件,那么WithEvents和Handles是最简单的方法。在设置事件方面,该语言将为您完成所有肮脏的工作。另一方面,如果您倾向于在表单的生命周期中断开事件,AddHandler和RemoveHandler是更好的选择。
答案 1 :(得分:4)
我更喜欢WithEvents / Handles在适用的情况下,因为它更好地表达了代码应该做的事情。使用“WithEvents / Handles”的一个警告是,任何从较长寿命对象接收事件的对象都应该实现IDisposable,并且在处理时应将其所有WithEvents变量设置为Nothing,以确保所有事件都是无连接的。使用AddHandler / RemoveHandler时分离事件是必要的,但也许更明显。使用WithEvents时,更容易忘记。
顺便说一句,我不知道有什么方法可以自动将所有WithEvents变量设置为Nothing。这似乎是一个很普遍的要求,但无论出于什么原因,微软都没有在VB中包含这样的功能。
答案 2 :(得分:1)
取决于你真正做的事情,如果你想动态附加/分离事件处理程序,那么使用AddHandler / RemoveHandler就可以了解它,否则使用Handles是完全没问题的。