Delphi (Indy + ADO) CoInitialize 慢

Adr*_*ian 0 delphi indy

我试图让 TIdTCPServer 实例中的每个连接线程将 TADOConnection 实例化到上下文中。

这工作正常,我将 CoInitialize(nil) 放在 OnConnect 事件处理程序中。问题是这个过程需要大约 20-25 秒才能工作,这太长了......

有什么建议吗?

干杯,阿德里安

Rem*_*eau 5

CoInitialize()或 ADO不太可能需要那么长时间来初始化。我已经使用多线程 COM 多年,从未经历过这样的延迟。

话虽如此,初始化 COM 的更好位置是在调用线程的Execute()方法的顶部,而不是在服务器的OnConnect事件中。要使用 Indy 做到这一点,从TIdThreadWithTask它派生一个新类并覆盖它的BeforeExecute()AfterExecute()方法。然后实例化一个TIdSchedulerOfThread...组件,将你的类分配给它的ThreadClass属性,并Scheduler在激活服务器之前将它分配给服务器的属性。