WinForm MVP с незапрошенной веткой событий - PullRequest
0 голосов
/ 08 декабря 2011

Я унаследовал большое приложение WinForm, которое могло бы переписать. У меня был успех с архитектурой MVP в ASP.NET Web Forms, и я подумал, что это хорошо подходит для этого приложения.

Приложение, по сути, прослушивает незапрошенные события из системы IVR (звонки по телефону, зависание вызова и т. Д.) И позволяет пользователям отправлять запрашиваемые события в IVR (набор, передача, удержание и т. Д.). Я довольно хорошо понимаю, как использовать MVP для запрашиваемых событий, но я нахожусь на пути к пониманию того, как будут обрабатываться незапрошенные события.

Сегодня приложение запускает поток, который выводит (который, вероятно, более запрошенный, чем незапрашиваемый сейчас, когда я пишу это), IVR каждые 500 мс.

Откуда взялся этот поток? Будет ли это в главном представителе?

Edit: Подумав немного больше, я думаю, что было бы целесообразно поместить его в метод инициализации Presenter основной формы. Я правильно об этом думаю?

1 Ответ

0 голосов
/ 08 декабря 2011

Я бы положил его в загрузчик, так как это кажется фундаментальным компонентом для вашего приложения (если оно у вас есть, если не в том же месте, где запускается основная форма приложения).

Я думаю, вам следует заключить эту логику опроса в какой-то синглтон, который, когда решит, что что-то стоит уведомить, вызовет событие.

Одним из способов достижения этого может быть создание синглтона с таймером. На мероприятии ontimer вы должны пойти и проверить IVR, чтобы увидеть, есть ли что-нибудь интересное, чтобы уведомить или нет.

Чтобы узнать, кого вы должны уведомить, вам нужно либо сохранить список подписчиков для тех, кто заинтересован в получении уведомлений (как в шаблоне наблюдателя), либо иметь событие .net, где ваши докладчики присоединяются / отсоединяются, или вы также можете использовать некоторую реализацию отдельных событий в качестве той, которую предоставляет инфраструктура Prism.

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