![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Insert |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 13.4.2006 Репутация: нет Всего: 1 |
Здравствуйте, подскажите как рациональнее отобразить результаты работы длл на главной форме. Опишу поподробнее. Есть сборка в ней проект WinForms и DLL. В dll реализован класс, который по таймеру что то делает и результат его работы надо передавать на приложение WinForms. Вижу два варианта:
1. Приложение слушает и с заданным интервалом своего таймера опрашивает класс из длл, не изменились ли его свойства, в которые он положит результат. У приложения будет меньший интервал работы таймера, чтобы обеспечить более интерактивную синхронизацию. 2. Если в очередной итерации таймера из длл появились какие то результаты, то кладем их в соответствующие свойства и каким-то образом сообщаем приложению что необходимо их считать. Лучше по-мойму второй вариант, но не знаю как его реализовать, т.к. надо соблюсти инкапсуляцию и модульность, чтобы длл не привязывать к форме намертво. Может для реализации второго варианта лучше будет создать в длл какое-нибудь свойство процедурного типа(а-ля Delphi) и с помощью него вызывать какую нибудь процедуру допустим Refresh, с приложения WinForm, которая и будет обновлять данные. Заранее спасибо --------------------
пьяный русский кодер практически непобедим |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
Я думаю, ни тот, ни другой вариант =)
Лучше в объекте длл объявить событие, которое будет вызываться по таймеру и информировать об изменении состояния объекта. А WinForms будет подписываться на него и отображать изменения. Подробнее см. паттерн Observer. Это сообщение отредактировал(а) QryStaL - 15.5.2008, 13:29 -------------------- I don't need a reason being who I am... |
|||
|
||||
| Insert |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 13.4.2006 Репутация: нет Всего: 1 |
Посмотрел, как раз то что нужно в моем случае, этот паттерн применяется для:
* Если один объект должен передавать сообщения другим объектам, но при этом он не может или не должен знать об их внутреннем устройстве; * В случае если при изменении одного объекта необходимо изменять другие объекты; * Для предотвращения сильных связей между объектами системы; * Для наблюдения за состоянием определенных объектов системы; Попробую реализовать данный паттерн у себя в проекте, правда проблемы с синтаксисом, но все же попробую, о результатах отпишусь --------------------
пьяный русский кодер практически непобедим |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
Он уже реализован в C# =). В качестве субъектов - events, в качестве наблюдателей - delegates.
-------------------- I don't need a reason being who I am... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |