【问题标题】:WithEvents/Handles better than Remove/AddHandler?WithEvents/Handles 比 Remove/AddHandler 更好?
【发布时间】:2011-01-13 14:32:40
【问题描述】:

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

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

【问题讨论】:

    标签: vb.net event-handling


    【解决方案1】:

    取决于你真正在做什么,如果你想动态附加/分离事件处理程序,那么使用 AddHandler/RemoveHandler 是解决它的方法,否则使用 Handles 是非常好的。

    【讨论】:

      【解决方案2】:

      这取决于您要达到的目标。如果您有多个事件处理程序必须在表单/对象的生命周期内处理各种控件的事件,那么 WithEvents 和 Handles 是最简单的方法。在设置活动方面,该语言将为您完成所有繁琐的工作。另一方面,如果您倾向于在表单的生命周期内断开与事件的连接,那么 AddHandler 和 RemoveHandler 是更好的选择。

      【讨论】:

        【解决方案3】:

        在适用的情况下,我更喜欢 WithEvents/Handles,因为它更好地表达了代码应该做什么。对“WithEvents/Handles”的一个警告是,任何从寿命较长的对象接收事件的对象都应该实现 IDisposable,并且在处理它时应该将其所有 WithEvents 变量设置为 Nothing,以确保所有事件都是未连接的。使用 AddHandler/RemoveHandler 时分离事件是必要的,但可能更明显。使用 WithEvents 时更容易忘记。

        顺便说一句,我不知道有什么方法可以自动将所有 WithEvents 变量设置为 Nothing。这似乎是一个足够普遍的要求,但无论出于何种原因,Microsoft 都没有在 VB 中包含这样的功能。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-02
          相关资源
          最近更新 更多