0

TADOConnectionをコンテキストにインスタンス化するために、TIdTCPServerインスタンスの各接続スレッドを取得しようとしています。

これは正常に機能し、CoInitialize(nil)をOnConnectイベントハンドラーに配置します。問題は、このプロセスが機能するのに約20〜25秒かかることです。これは、非常に長い時間です...

何かアドバイス?

乾杯、エイドリアン

4

1 に答える 1

5

CoInitialize()いずれかまたは ADO の初期化にそれほど時間がかかることはほとんどありません。私は何年もマルチスレッド COM を使用してきましたが、このような遅延は経験したことがありません。

そうは言っても、COM を初期化するのに適した場所は、サーバーのイベントExecute()ではなく、呼び出し元のスレッドのメソッドの先頭です。OnConnectIndy でこれを行うには、から新しいクラスを派生させ、そのメソッドとメソッドTIdThreadWithTaskをオーバーライドします。次に、コンポーネントをインスタンス化し、クラスをそのプロパティに割り当て、それをサーバーのプロパティに割り当ててから、サーバーをアクティブにします。BeforeExecute()AfterExecute()TIdSchedulerOfThread...ThreadClassScheduler

于 2012-08-08T03:54:39.973 に答える