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