【发布时间】:2019-07-13 20:30:28
【问题描述】:
美好的一天。 我创建了一个类实例 Thread。 在这个线程中,我创建了 udpserver。 UDPREAD 与主线程同步。
问题:如何不与主线程同步,而是与作为 UDP 父级的线程同步
谢谢
【问题讨论】:
标签: multithreading udp firemonkey indy synchronize
美好的一天。 我创建了一个类实例 Thread。 在这个线程中,我创建了 udpserver。 UDPREAD 与主线程同步。
问题:如何不与主线程同步,而是与作为 UDP 父级的线程同步
谢谢
【问题讨论】:
标签: multithreading udp firemonkey indy synchronize
TIdUDPServer 是一个多线程组件。在内部,它为您在TIdUDPServer.Bindings 集合中设置的每个项目运行一个单独的读取线程。当给定的Binding 接收到传入数据时,相应的线程会读取数据,然后触发OnUDPRead 事件。
默认情况下,OnUDPRead 事件处理程序在主 UI 线程的上下文中调用,通过调用 TThread.Synchronize()。如果您想避免这种情况,您需要将TIdUDPServer.ThreadedEvent 属性设置为true。然后将在Binding 的读取线程的上下文中直接调用事件处理程序,并且您可以根据需要将事件处理程序的代码与服务器的父线程同步。
【讨论】: