WithEvents / Handles比Remove / AddHandler更好?

时间:2010-02-05 16:49:00

标签: vb.net event-handling

从内存的角度来看(在使用后删除添加的处理程序等),WithEventsHandles的使用率是否优先于RemoveHandlerAddHandler

相关的Stack Overflow问题是 Event handler and memory leaks

3 个答案:

答案 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是完全没问题的。

相关问题