2009-10-06 68 views
0

我正處於一個項目的研究階段,該項目需要爲計算機遊戲事件開發一個自定義事件管理器。VB.NET:建立事件管理器 - 聽衆

在過去,輪詢的事件消費代碼正確件路由代碼已經被完全放置在事件管理器的ProcessEvents()功能。示例:需要爲UI提供消耗鼠標點擊事件的機會,但玩家對象不會。

即將到來的項目的規模相當大,我可以看到在ProcessEvents()函數中放入這種類型的路由變得相當麻煩。

在我昨晚讀的時候,我讀到了關於註冊&取消註冊聽衆的概念。

這聽起來像個好主意,但我完全喪失了這個工作原理,或者我將如何在VB.NET中實現它。我想這個概念是這樣的。如果我創建新的對象,我會以某種方式將其註冊爲事件類型的監聽器,如GunShoot,BombExplode等。在事件管理器處理事件期間,如果遇到BombExplode事件,它將輪詢每個事件註冊的監聽器是否可以使用該事件。

這怎麼能在VB.NET中有效實現?

謝謝。

回答

1

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

如果你讓你的用戶妥善執行IWeakEventListener,並建立了相應的WeakEventManager類,你可以有一個聽取了「事件管理器」事件(這可以通過多種方式來實現)的聽衆,而不必擔心壽命問題導致記憶「泄漏」。