VB.NET: Создание менеджера событий - слушатели - PullRequest
0 голосов
/ 07 октября 2009

Я нахожусь в стадии исследования проекта, который потребует разработки специального менеджера событий для событий компьютерной игры.

В прошлом код маршрутизации для опроса правильных фрагментов кода для потребления событий целиком помещался в функцию ProcessEvents () диспетчера событий. Пример: пользовательскому интерфейсу должна быть предоставлена ​​возможность использовать событие «щелчок мышью», а объекту игрока - нет.

Размер предстоящего проекта довольно велик, и я вижу, что это довольно раздражает необходимость включать этот тип маршрутизации в функцию ProcessEvents ().

Во время моего вчерашнего чтения я прочитал о концепции регистрации и отмены регистрации слушателей .

Это звучит как отличная идея, но я в полной растерянности относительно того, как именно это работает или как я реализовал бы это в VB.NET. Я полагаю, концепция заключается в следующем. Если бы я создал новый объект Monster , я бы каким-то образом зарегистрировал его в качестве прослушивателя для таких типов событий, как GunShoot, BombExplode и т. Д. Во время обработки событий менеджером событий, если он встречает событие BombExplode он будет опрашивать каждого зарегистрированного слушателя, если они могут использовать событие.

Как это можно эффективно реализовать в VB.NET?

Спасибо.

1 Ответ

1 голос
/ 07 октября 2009

Это похоже на идеальный сценарий для встроенного WeakEvent Pattern в .NET.

Если вы заставили своих подписчиков соответствующим образом реализовать IWeakEventListener и создали соответствующие классы WeakEventManager , у вас могут быть прослушиватели, которые прослушивают события «менеджера событий» (которые могут быть реализованы в множеством способов), не беспокоясь о проблемах жизни, приводящих к «утечкам» памяти.

...