Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод результатов на форму, из dll 
V
    Опции темы
Insert
Дата 15.5.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



Здравствуйте, подскажите как рациональнее отобразить результаты работы длл на главной форме. Опишу поподробнее. Есть сборка в ней  проект WinForms и DLL. В dll реализован класс, который по таймеру что то делает и результат его работы надо передавать на приложение WinForms. Вижу два варианта: 

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

2. Если в очередной итерации таймера из длл появились какие то результаты, то кладем их в соответствующие свойства и каким-то образом сообщаем приложению что необходимо их считать. 

Лучше по-мойму второй вариант, но не знаю как его реализовать, т.к. надо соблюсти инкапсуляцию и модульность, чтобы длл не привязывать к форме намертво. Может для реализации второго варианта лучше будет создать в длл какое-нибудь свойство процедурного типа(а-ля Delphi) и с помощью него вызывать какую нибудь процедуру допустим Refresh, с приложения WinForm, которая и будет обновлять данные.

Заранее спасибо smile 

--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
QryStaL
Дата 15.5.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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...
PM MAIL ICQ   Вверх
Insert
Дата 16.5.2008, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



Посмотрел, как раз то что нужно в моем случае, этот паттерн применяется для:
    * Если один объект должен передавать сообщения другим объектам, но при этом он не может или не должен знать об их внутреннем устройстве;
    * В случае если при изменении одного объекта необходимо изменять другие объекты;
    * Для предотвращения сильных связей между объектами системы;
    * Для наблюдения за состоянием определенных объектов системы;

Попробую реализовать данный паттерн у себя в проекте, правда проблемы с синтаксисом, но все же попробую, о результатах отпишусь smile 
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
QryStaL
Дата 16.5.2008, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



Он уже реализован в C# =). В качестве субъектов - events, в качестве наблюдателей - delegates.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.