Delphi(Indy + ADO)CoInitialize Slow

时间:2012-08-08 03:42:51

标签: delphi indy

我正在尝试获取TIdTCPServer实例中的每个连接线程,以将TADOConnection实例化到上下文中。

这很好用,我将CoInitialize(nil)放在OnConnect事件处理程序中。问题是这个过程需要大约20-25秒才能完成,这是很长的...

有什么建议吗?

干杯, 阿德里安

1 个答案:

答案 0 :(得分:4)

初始化CoInitialize()或ADO的时间非常短。多年来我一直使用多线程COM,从未经历过这样的延迟。

话虽这么说,初始化COM的一个更好的地方是调用线程的Execute()方法的顶部而不是服务器的OnConnect事件。要使用Indy执行此操作,请从TIdThreadWithTask派生新类并覆盖其BeforeExecute()AfterExecute()方法。然后实例化一个TIdSchedulerOfThread...组件,将您的类分配给其ThreadClass属性,并在激活服务器之前将其分配给服务器的Scheduler属性。