我正处于项目的研究阶段,需要为计算机游戏事件开发自定义事件管理器。
过去,用于轮询事件消耗的正确代码片段的路由代码完全位于事件管理器的 ProcessEvents()函数中。示例:需要为UI提供使用鼠标单击事件的机会,但播放器对象不需要。
即将推出的项目的规模非常大,我可以看到在ProcessEvents()函数中放置这种类型的路由变得相当烦人。
在昨晚的阅读中,我读到了注册和概念的概念。取消注册侦听器。
这听起来是个好主意,但我完全不知道它是如何工作的,或者我将如何在VB.NET中实现它。我想这个概念就是这个。如果我创建新的 Monster 对象,我会以某种方式将其注册为事件类型的监听器,例如GunShoot,BombExplode等。在事件管理器处理事件期间,如果遇到BombExplode事件,如果他们可以使用该事件,它将轮询每个注册的监听器。
如何在VB.NET中有效实现?
感谢。
答案 0 :(得分:1)
这似乎是.NET中内置WeakEvent Pattern的完美场景。
如果您让订阅者适当地实现了IWeakEventListener并创建了适当的WeakEventManager类,那么您可以让听众听取“事件管理器”事件(可以通过多种方式实现),无需担心导致内存“泄漏”的终生问题。