Добрый день. Я создаю экземпляр класса Thread. В этой теме я создаю udpserver. UDPREAD синхронизируется с основным потоком.
Вопрос: Как синхронизироваться не с основным потоком, а с потоком, который является родителем UDP
благодарю вас
Добрый день. Я создаю экземпляр класса Thread. В этой теме я создаю udpserver. UDPREAD синхронизируется с основным потоком.
Вопрос: Как синхронизироваться не с основным потоком, а с потоком, который является родителем UDP
благодарю вас
TIdUDPServer
— это многопоточный компонент. Внутри он запускает отдельный поток чтения для каждого элемента, который вы устанавливаете в коллекции TIdUDPServer.Bindings
. Когда данный Binding
получает входящие данные, соответствующий поток считывает данные, а затем запускает событие OnUDPRead
.
По умолчанию обработчик события OnUDPRead
вызывается в контексте основного потока пользовательского интерфейса через вызов TThread.Synchronize()
. Если вы хотите избежать этого, вам нужно установить для свойства TIdUDPServer.ThreadedEvent
значение true. Затем обработчик событий будет вызываться в контексте потока чтения Binding
напрямую, и вы можете синхронизировать код обработчика событий с родительским потоком вашего сервера, как хотите.