System.Win.ScktComp.TServerClientThread.ClientExecute
Delphi
procedure ClientExecute; virtual;
C++
virtual void __fastcall ClientExecute();
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
protected | System.Win.ScktComp.pas System.Win.ScktComp.hpp |
System.Win.ScktComp | TServerClientThread |
説明
関連付けられているサーバーソケットの OnClientRead イベントと OnClientWrite イベントをシミュレートします。
TServerClientThread メソッドは,Execute メソッドから ClientExecute メソッドを呼び出します。ClientExecute メソッドは,関連付けられているソケット接続から読み取る情報があるかどうかをチェックし,情報がある場合には,関連付けられているサーバーソケットの OnClientRead イベントをシミュレートします。クライアントから情報が送られない場合,ClientExecute は OnClientWrite イベントをシミュレートします。
こうしたイベントを受け取るサーバーソケットはスレッドに対してローカルではないので,イベントは Synchronize メソッドを使用するメイン VCL スレッド内で生じます。各スレッドはほかのスレッドが読み書きを終えるまで待たなければならないので,サーバーソケットが多数のクライアント接続を持っている場合には,このメソッドは遅すぎる場合があるかもしれません。サーバーソケットが多くのクライアント接続要求を受け取る場合は,TWinSocketStream のスレッドローカルインスタンスを使って読み書きを処理するように,ClientExecute メソッドをオーバーライドできます。ClientExecute メソッドでは,Terminated プロパティを定期的にチェックする必要があります。
メモ: グローバルオブジェクトのプロパティとメソッドを ClientExecute メソッドで直接使用しないでください。かわりに,スレッドローカルではないオブジェクトを別々の手続き呼び出しに分割して使用し,その手続きをパラメータとして Synchronize メソッドに渡すことによって呼び出します。