0

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

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

有什么建议吗?

干杯,阿德里安

4

1 回答 1

5

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

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

于 2012-08-08T03:54:39.973 回答