我试图让 TIdTCPServer 实例中的每个连接线程将 TADOConnection 实例化到上下文中。
这工作正常,我将 CoInitialize(nil) 放在 OnConnect 事件处理程序中。问题是这个过程需要大约 20-25 秒才能工作,这太长了......
有什么建议吗?
干杯,阿德里安
CoInitialize()或 ADO不太可能需要那么长时间来初始化。我已经使用多线程 COM 多年,从未经历过这样的延迟。
话虽如此,初始化 COM 的更好位置是在调用线程的Execute()方法的顶部,而不是在服务器的OnConnect事件中。要使用 Indy 做到这一点,从TIdThreadWithTask它派生一个新类并覆盖它的BeforeExecute()和AfterExecute()方法。然后实例化一个TIdSchedulerOfThread...组件,将你的类分配给它的ThreadClass属性,并Scheduler在激活服务器之前将它分配给服务器的属性。