TIdCommandHandler:OnCommand等待终止

时间:2015-10-20 17:13:13

标签: delphi indy indy10

我有一台使用TIdCmdTCPServer的服务器和几个客户端。这些客户端可以同时发送消息。当我模拟这个(例如让10个客户端同时发送命令)时,TIdCommandHandler的OnCommand事件被调用,但在它终止之前,它被中断并被其他客户端再次调用,等等。

那么,有没有办法从TIdCommandHandler配置OnCommand以在再次调用之前完成事件?

1 个答案:

答案 0 :(得分:0)

与Indy中的大多数其他服务器一样,TIdCmdTCPServer是一个多线程组件。每个连接的客户端都由其自己的工作线程管理。在接收客户端命令的每个线程的上下文中调用OnCommand事件处理程序。因此,多个OnCommand处理程序可以同时并行运行,因此必须以线程安全的方式编写事件处理程序代码。您不应该尝试序列化事件本身,只能序列化对事件跨线程边界访问的任何共享资源的访问。