TADOConnectionをコンテキストにインスタンス化するために、TIdTCPServerインスタンスの各接続スレッドを取得しようとしています。
これは正常に機能し、CoInitialize(nil)をOnConnectイベントハンドラーに配置します。問題は、このプロセスが機能するのに約20〜25秒かかることです。これは、非常に長い時間です...
何かアドバイス?
乾杯、エイドリアン
CoInitialize()
いずれかまたは ADO の初期化にそれほど時間がかかることはほとんどありません。私は何年もマルチスレッド COM を使用してきましたが、このような遅延は経験したことがありません。
そうは言っても、COM を初期化するのに適した場所は、サーバーのイベントExecute()
ではなく、呼び出し元のスレッドのメソッドの先頭です。OnConnect
Indy でこれを行うには、から新しいクラスを派生させ、そのメソッドとメソッドTIdThreadWithTask
をオーバーライドします。次に、コンポーネントをインスタンス化し、クラスをそのプロパティに割り当て、それをサーバーのプロパティに割り当ててから、サーバーをアクティブにします。BeforeExecute()
AfterExecute()
TIdSchedulerOfThread...
ThreadClass
Scheduler