2015-10-20 57 views
0

我有一臺服務器使用TIdCmdTCPServer和幾個客戶端。這些客戶端可以同時發送消息。當我模擬這個時(例如,將10個客戶端同時發送一個命令),TIdCommandHandler的OnCommand事件被調用,但在它終止之前,它被中斷,並且被其他客戶端再次調用,等等。TIdCommandHandler:OnCommand等待終止

那麼,有沒有辦法從TIdCommandHandler配置OnCommand來完成再次被調用的事件?

回答

0

像Indy中的大多數其他服務器一樣,TIdCmdTCPServer是一個多線程組件。每個連接的客戶端都由其自己的工作線程管理。在接收客戶端命令的每個線程的上下文中調用事件處理程序。因此,多個OnCommand處理程序可以同時並行運行,因此您的事件處理程序代碼必須以線程安全的方式編寫。您不應該嘗試自行序列化事件,只能序列化訪問跨越線程邊界的事件訪問的任何共享資源。