我正在使用Indy 10(来自Delphi 2009)构建TCP服务器。在OnExecute事件中,我需要从主线程访问一些数据。我启动它时可以将该数据传递给服务器线程吗?服务器以IdTCPServer1.Active:=True;
启动,所以我看不出如何传递一些参数。
答案 0 :(得分:3)
无法将额外参数传递给TIdTCPServer
。您的服务器事件处理程序必须在需要时从主线程检索数据。
要跟踪事件中的每个连接数据,您可以使用TIdContext.Data
属性,或从TIdServerContext
派生自定义类并将其分配给TIdTCPServer.ContextClass
属性。例如,您的OnConnect
事件处理程序可以使用TIdSync
或TThread.Synchronize()
从主线程检索最新数据,然后将其缓存在OnExecute
的上下文中以供使用。 / p>