2009-10-06 66 views
0

我正处于一个项目的研究阶段,该项目需要为计算机游戏事件开发一个自定义事件管理器。VB.NET:建立事件管理器 - 听众

在过去,轮询的事件消费代码正确件路由代码已经被完全放置在事件管理器的ProcessEvents()功能。示例:需要为UI提供消耗鼠标点击事件的机会,但玩家对象不会。

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

在我昨晚读的时候,我读到了关于注册&取消注册听众的概念。

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

这怎么能在VB.NET中有效实现?

谢谢。

回答

1

这似乎是在.NET中构建WeakEvent Pattern的完美方案。

如果你让你的用户妥善执行IWeakEventListener,并建立了相应的WeakEventManager类,你可以有一个听取了“事件管理器”事件(这可以通过多种方式来实现)的听众,而不必担心寿命问题导致记忆“泄漏”。