VB.NET: создание менеджера событий - слушатели

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

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

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

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

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

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

Спасибо.


person Brian Webster    schedule 06.10.2009    source источник


Ответы (1)


Это кажется идеальным сценарием для встроенного WeakEvent Pattern в. СЕТЬ.

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

person Reed Copsey    schedule 06.10.2009