C # заставляет событие ждать - PullRequest
1 голос
/ 26 октября 2010

Я работаю над кодом, управляемым событиями.В одном из компонентов моей системы иногда возникает событие, для которого у меня нет обработчика на данный момент.Есть ли способ заставить событие «ждать», пока для него не появится обработчик?

Спасибо,

PM

1 Ответ

3 голосов
/ 26 октября 2010

В C # нет встроенного механизма для организации очередей событий и их отправки при подключении обработчиков. События генерируются синхронно, когда происходит какое-то интересное действие ... "ожидание" обработчика потребует процессаблокировать.

Вы можете реализовать свою собственную очередь событий, предоставив настраиваемую реализацию элемента события в своем классе. Вам потребуется отдельная структура данных для кэшированияинформация о ранее «возбужденных» событиях и их очередь для подключения обработчика.

Проблема с вышеприведенной схемой состоит в том, что, хотя это возможно, это весьма необычно и немного сбивает с толку.Большинство разработчиков не ожидают, что события будут инициированы таким образом.Это также усложняется тем фактом, что если большое количество событий происходит без подключенного обработчика, вы можете использовать значительное количество памяти для хранения событий, которые никогда не будут отправлены.Лично я бы вообще советовал избегать такого дизайна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...