2015-10-20 56 views
0

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

那么,有没有办法从TIdCommandHandler配置OnCommand来完成再次被调用的事件?

回答

0

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