【问题标题】:VB.NET: Building an Event Manager - ListenersVB.NET:构建事件管理器 - 监听器
【发布时间】:2010-12-04 10:53:58
【问题描述】:

我正处于一个项目的研究阶段,该项目需要为电脑游戏事件开发自定义事件管理器。

过去,用于轮询事件消费的正确代码片段的路由代码已完全放在事件管理器的ProcessEvents()函数中。示例:需要为 UI 提供使用鼠标单击事件的机会,但播放器对象没有。

即将到来的项目的规模相当大,我可以看到将这种类型的路由放在 ProcessEvents() 函数中变得相当烦人。

在昨晚阅读的过程中,我读到了注册和注销监听器的概念。

这听起来是个好主意,但我完全不知道它是如何工作的,或者我将如何在 VB.NET 中实现它。我想这个概念是这样的。如果我创建新的 Monster 对象,我会以某种方式将其注册为事件类型的侦听器,例如 GunShoot、BombExplode 等。在事件管理器处理事件期间,如果遇到 BombExplode 事件,它将轮询每个注册的侦听器是否可以使用该事件。

如何在 VB.NET 中有效地实现这一点?

谢谢。

【问题讨论】:

    标签: vb.net events event-handling listener


    【解决方案1】:

    这似乎是 .NET 中内置 WeakEvent Pattern 的完美场景。

    如果您让您的订阅者适当地实现IWeakEventListener,并创建适当的WeakEventManager 类,您就可以让监听器监听“事件管理器”事件(可以通过多种方式实现),而不必担心关于导致内存“泄漏”的生命周期问题。

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 1970-01-01
      • 2014-02-21
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多