![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Привет. Возникла проблема при использовании компонента IdIRC. Вся функциональность программы уже реализована, но теперь возникла проблема. При падении сервера, программа должна сделать попытки соединения на него до тех пор, пока оно не будет установлено. Я реализовал такой подход:
|
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Ну, товарищи прогеры. Неужели никто не болел этим?
Я просто вообще не догоняю в чем может быть причина такого бездействия со стороны компонента. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 5 Всего: 158 |
изучай: Многопоточность - как это делается в Дельфи. Пример простого многопоточного приложения. |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Гм. IdIRC - компонент невизуальный :(
У меня вся программа в таких потоках, все корректно работает. А вот автоконнект реализовать так и не получилось. Тамер думаю будет работать неэффективно. |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Компонент IdIRC - невизуальный. У меня вся функциональность программы реализована как раз через работу с этим компонентом в основном и дополнительных потоках. Использовать таймер, думаю будет неэффективно. Нужно чтобы программа не ежеминутно коннектилась к серверу, а незамедлительно, как только сервер стал доступен.
Это сообщение отредактировал(а) Elfix - 3.8.2007, 12:08 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 5 Всего: 158 |
визуальный-невизуальный... нельзя компонентами рулить из разных потоков, не используя синхронизацию. в твоем случае проблема "высосана из пальца", а использование потоков "притянуто за уши".
простейший код полностью решает "проблему" реконнекта:
обоснуй. |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Код не работает. Таймер не включается. Я думаю проблема в том, что событие Disconnect обрабатывается только когда сам клиент вызывает Disconnect, а у меня несколько другая задача - попытаться восстановить связь тогда, когда сервер, наконец, возобновит работу.
О таймере. Я думал, что будет предложена несколько другая реализация, когда таймер крутится постоянно, проверяя соединение с сервером. Впринципе меня этот способ бы тоже устроил, но все таки работу с потоком я рассматриваю как наиболее красивый вариант. Никогда при использовании потоков с невизуальными компонентами у меня проблем не возникало. Единственное, прочитав Рихтера наверно убрал бы из процедуры ConnectToServer функцию EndThread. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |