TIdCommandHandler:OnCommand 等待终止
TIdCommandHandler: OnCommand wait terminate
我有一个使用 TIdCmdTCPServer 的服务器和几个客户端。这些客户可以同时发送消息。当我模拟这个(例如让 10 个客户端同时发送命令)时,调用 TIdCommandHandler 的 OnCommand 事件,但在它终止之前,它被中断并被其他客户端再次调用,等等。
那么,有没有办法从 TIdCommandHandler 配置 OnCommand 以在再次调用之前完成事件?
与 Indy 中的大多数其他服务器一样,TIdCmdTCPServer
是一个多线程组件。每个连接的客户端都由其自己的工作线程管理。 OnCommand
事件处理程序在每个接收客户端命令的线程的上下文中调用。因此,多个 OnCommand
处理程序可以同时并行 运行,因此您的事件处理程序代码必须以线程安全的方式编写。您不应尝试序列化事件本身,而应仅序列化对事件跨线程边界访问的任何共享资源的访问。
我有一个使用 TIdCmdTCPServer 的服务器和几个客户端。这些客户可以同时发送消息。当我模拟这个(例如让 10 个客户端同时发送命令)时,调用 TIdCommandHandler 的 OnCommand 事件,但在它终止之前,它被中断并被其他客户端再次调用,等等。
那么,有没有办法从 TIdCommandHandler 配置 OnCommand 以在再次调用之前完成事件?
与 Indy 中的大多数其他服务器一样,TIdCmdTCPServer
是一个多线程组件。每个连接的客户端都由其自己的工作线程管理。 OnCommand
事件处理程序在每个接收客户端命令的线程的上下文中调用。因此,多个 OnCommand
处理程序可以同时并行 运行,因此您的事件处理程序代码必须以线程安全的方式编写。您不应尝试序列化事件本身,而应仅序列化对事件跨线程边界访问的任何共享资源的访问。