![]() |
Модераторы: MetalFan |
![]() ![]() ![]() |
|
Fedia |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: нет Всего: 13 |
Приветствую всех !
Столкнулся вот с какой задачей: Реализован внешний Com-сервер автоматизации (Automation Object), обеспечивающий обратную связь со своими клиентами посредством событий:
В процедуре DoChange получаем перечень клиентов сервера, затем перебираем клиентов и генерируем на их "стоках" событие OnChange. При закрытии программы - клиента на OnClose главной формы осуществляется отключение от сервера автоматизации:
Проблема в том, что приложение - клиент может быть закрыто через диспетчер задач (вкладка "Процессы") или какой-либо другой тяжелой артиллерией и процедура отключения от сервера не сработает -> сервер не будет знать о том, что клиент отключился и при попытка генерации события на "стоке" клиента он получит ошибку AV. Я поставил заглушку в виде блока try..except, но это ведь не дело. Подскажите как перед генерацией события мне проверить доступность клиента ? ЗЫ: описал задачу как смог, если понадобятся уточнения, то спрашивайте. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
||||
|
|||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
Использование исключений это правильный путь, они для этой цели и созданы.
Нужно только добавить обработчик исключения который удалит клиента из списка, чтобы не возникало ошибок вдальнейшем. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Fedia |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: нет Всего: 13 |
По хорошему, если все же использовать try...except, то нужно конечно удалить клиента из перечня подключений, но реализовать это у меня не получается. Пробовал так:
Да и все равно не хочется мне ловить в программе ошибки (тем более AV), т.к. это может быть чревато различными проблемами в дальнейшем. Поэтому вопрос о проверке доступности клиента остается открытым. B еще добавился вопрос: как в обработчике except…end уведомить сервер, что клиент ConnectData.pUnk отключился. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |