【问题标题】:firemonkey indy udp Synchronize Threadfiremonkey indy udp 同步线程
【发布时间】:2019-07-13 20:30:28
【问题描述】:

美好的一天。 我创建了一个类实例 Thread。 在这个线程中,我创建了 udpserver。 UDPREAD 与主线程同步。

问题:如何不与主线程同步,而是与作为 UDP 父级的线程同步

谢谢

【问题讨论】:

    标签: multithreading udp firemonkey indy synchronize


    【解决方案1】:

    TIdUDPServer 是一个多线程组件。在内部,它为您在TIdUDPServer.Bindings 集合中设置的每个项目运行一个单独的读取线程。当给定的Binding 接收到传入数据时,相应的线程会读取数据,然后触发OnUDPRead 事件。

    默认情况下,OnUDPRead 事件处理程序在主 UI 线程的上下文中调用,通过调用 TThread.Synchronize()。如果您想避免这种情况,您需要将TIdUDPServer.ThreadedEvent 属性设置为true。然后将在Binding 的读取线程的上下文中直接调用事件处理程序,并且您可以根据需要将事件处理程序的代码与服务器的父线程同步。

    【讨论】:

    • 表示不仅可以与主流同步,还可以与父级UDP的流同步,TThread.Synchronize(nil, MyThreadProcedure)
    • 这意味着您可以根据需要同步(部分)事件处理程序代码。
    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2013-04-09
    • 2017-07-08
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多