dbxユーザーセッションのWndProcにフックする方法はありますか?
背景:dbx DataSnapは、TCP通信にIndyコンポーネントを使用します。最も単純な形式では、DataSnapサーバーは接続を受け入れるIndyTCPサーバーです。接続が確立されると、Indyはその接続のスレッドを作成し、その接続のすべての要求を処理します。
これらの各ユーザー接続はリソースを消費します。同時接続数が数百のサーバーの場合、これらのリソースは高額になる可能性があります。多くのリソースをプールすることができますが、必要になるたびにリソースを取得して解放する必要はありません。
代わりに、アイドルタイマーを実装したいと思います。スレッドがリソースで終了すると、タイマーが開始します。タイマーが経過する前にスレッドがリソースにアクセスした場合でも、リソースはそのスレッドに「割り当て」られます。ただし、次のアクセスの前にタイマーが経過すると、リソースは解放されてプールに戻されます。次回スレッドがリソースを必要とするとき、別のリソースがプールから取得されます。
私はこれを行う方法を見つけていません。SetTimerを使用してみましたが、タイマーコールバックが起動しません。これは、スレッドに対するIndyのWndProcがWM_TIMERをディスパッチしていないためだと思います。このスレッドの「実行ループ」を制御できないため、イベントが通知されたかどうかを簡単に確認できません。実際、スレッドがユーザーリクエストを処理していない限り、このスレッドのコードは実行されません。そして実際、私はコードをユーザーの要求の外で実行したいと思っています。
元の質問に対する解決策または代替アプローチの提案も同様に高く評価されます。