Я использую Embarcadero RAD studio C++ Builder XE для создания приложения C++. Приложение использует динамически созданный компонент TServerSocket
в режиме блокировки. Я создаю класс, производный от TServerClientThread
, который предоставляет собственный метод ClientExecute()
. Этот класс создается с помощью TServerSocket
обработчика событий OnGetThread
, который я реализовал. Я назначаю обработчики событий для OnAccept
, OnClientConnect
, OnClientDisconnect
и OnClientError
. Внутри моего класса потока я использую класс TWinSocketStream
для чтения и записи из соединения сокета.
Я использую пользовательский написанный класс (производный от TComponent
), который создает TServerSocket
, а обработчики событий, которые я назначаю, являются функциями-членами этого класса.
Мои события OnAccept
и OnClientDisconnect
срабатывают, но ни одно из событий OnClientConnect
и OnClientError
никогда не срабатывает. Это нормальное поведение для этого компонента? Все, что я читал об этом компоненте, предполагает, что ВСЕ события будут срабатывать для TServerSocket
в режиме блокировки, и я просто не могу понять, почему эти события не сработают. Есть ли что-то еще, что мне нужно сделать, или эти события просто не работают в режиме блокировки? Возможно ли, что использование экземпляра TServerSocket
в качестве члена другого производного класса TComponent
вызывает какие-то проблемы?