Попробуй добавить обработчик для события OnConnect.
Там выставляй какой-нить флаг его срабатывания, а в конструкторе добавь Application->ProcessMessages() до срабатывания этого флага.
У меня была такая же проблема и решил я ее именно так.
Здравствуйте, Morpeh, Вы писали:
M>Здравствуйте, alex_mah, Вы писали:
M>Спасибо, помогло, кто бы мог подумать...
Все логично. Сокет асинхронный работает в отдельном от твоего приложения потоке. Поэтому нужно обрабатывать сообщения, что бы приложение узнало об отработке коннекта.
У такого способа есть посторонний эффект. Твое приложение получает возможность параллельно с созданием класса выполнять другие обработчки, нажимать кнопки, вызывать срабатывания таймеров и пр. Если это критично, то нужно подумать над синхронизацией.
Здравствуйте, alex_mah, Вы писали:
_>Здравствуйте, Morpeh, Вы писали:
M>>Здравствуйте, alex_mah, Вы писали:
M>>Спасибо, помогло, кто бы мог подумать...
_>Все логично. Сокет асинхронный работает в отдельном от твоего приложения потоке. Поэтому нужно обрабатывать сообщения, что бы приложение узнало об отработке коннекта. _>У такого способа есть посторонний эффект. Твое приложение получает возможность параллельно с созданием класса выполнять другие обработчки, нажимать кнопки, вызывать срабатывания таймеров и пр. Если это критично, то нужно подумать над синхронизацией.
По моему Application.ProcessMessages это за круто.
Достаточно будет процесать только сокетовые сообщения. Какие есть можна узнать: CM_SOCKETMESSAGE, CM_LOOKUPCOMPLETE, CM_DEFERFREE.
Ну а чтобы не кликалось куда не надо, можна седалать DisableTaskWindows и в конце EnableTaskWindows
D>По моему Application.ProcessMessages это за круто. D>Достаточно будет процесать только сокетовые сообщения. Какие есть можна узнать: CM_SOCKETMESSAGE, CM_LOOKUPCOMPLETE, CM_DEFERFREE.
D>Ну а чтобы не кликалось куда не надо, можна седалать DisableTaskWindows и в конце EnableTaskWindows
Все правильно, мне просто некогда было это все отлаживать. Утилитка была для внутреннего пользования.