我正在尝试获取TIdTCPServer实例中的每个连接线程,以将TADOConnection实例化到上下文中。
这很好用,我将CoInitialize(nil)放在OnConnect事件处理程序中。问题是这个过程需要大约20-25秒才能完成,这是很长的...
有什么建议吗?
干杯, 阿德里安
答案 0 :(得分:4)
初始化CoInitialize()
或ADO的时间非常短。多年来我一直使用多线程COM,从未经历过这样的延迟。
话虽这么说,初始化COM的一个更好的地方是调用线程的Execute()
方法的顶部而不是服务器的OnConnect
事件。要使用Indy执行此操作,请从TIdThreadWithTask
派生新类并覆盖其BeforeExecute()
和AfterExecute()
方法。然后实例化一个TIdSchedulerOfThread...
组件,将您的类分配给其ThreadClass
属性,并在激活服务器之前将其分配给服务器的Scheduler
属性。