メインコンテンツまでスキップ
バージョン: 20 R7 BETA

EXECUTE ON CLIENT

EXECUTE ON CLIENT ( clientName ; methodName {; param}{; param2 ; ... ; paramN} )

引数説明
clientNameText4D Clientの登録名
methodNameText実行するメソッドの名前
paramメソッドの引数

このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。

説明

EXECUTE ON CLIENT コマンドは、clientNameという名前で登録されている4D Clientで、必要であればparam1... paramNを引数とし、methodNameメソッドを実行します。4D Clientの登録名はREGISTER CLIENT コマンドで定義します。
このコマンドは、4D Clientまたは4D Serverのストアドプロシージャで呼び出すことができます。

メソッドが1つ以上の引数を要求する場合、メソッドの名前の後に引数を渡します。
4D Client上でのメソッド実行は、クライアントワークステーション上で自動的に作成されたプロセス内で行われます。そのプロセス名は4D Clientの登録名です。

このコマンドが同じ4D Clientに対して連続的に呼び出されると、実行がスタックされます。つまりメソッドは非同期モードで、次から次へと処理されます。スタックされたメソッドが増えると、4D Clientのワークロードも大きくなってしまいます。GET REGISTERED CLIENTSコマンドを使用して、各クライアントのワークロードの状態を知ることができます。

Note: 実行順序のスタックは、UNREGISTER CLIENTコマンドを使って4D Clientが登録解除されない限りは、変更することも止めることもできません。

登録された複数の4D Clientに対し、同じメソッドを同時に実行させる事ができます。これを実行するには、clientName引数にワイルドカード (@) を使用します。

OKシステム変数は、4D Serverがメソッドの実行要求を正しく受け取った場合、1になりますが、これはメソッドが4D Clientによって正しく実行されたということを保証するものではありません。

例題 1

"GenerateNums"メソッドを、"Client1"クライアント上で実行したいと仮定します:

 EXECUTE ON CLIENT("Client1";"GenerateNums";12;$a;"Text")

例題 2

すべてのクライアントに"EmptyTemp"メソッドを実行させたい場合には:

 EXECUTE ON CLIENT("@";"EmptyTemp")

例題 3

REGISTER CLIENT コマンドの例題参照

システム変数およびセット

4D Serverが正しく実行リクエストを受け取ると、OKシステム変数は1に設定されます。しかしこのことは4Dクライアント上でメソッドが正しく実行されることを保証するものではありません。

参照

Execute on server
GET REGISTERED CLIENTS
REGISTER CLIENT
UNREGISTER CLIENT