| 4D v20.1New process | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v20.1
 New process 
         | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| New process ( method ; stack {; name {; param {; param2 ; ... ; paramN}}}{; *} ) -> 戻り値 | ||||||||
| 引数 | 型 | 説明 | ||||||
| method | 文字 |   | プロセスで実行させるメソッド | |||||
| stack | 倍長整数 |   | スタックサイズ (バイト) | |||||
| name | 文字 |   | 作成するプロセスの名前 | |||||
| param | 式 |   | メソッドに渡す引数 | |||||
| * | 演算子 |   | 重複しないプロセス | |||||
| 戻り値 | 倍長整数 |   | 新規に作成されたプロセス番号 または既存のプロセス番号 | |||||
New process コマンドは、(同じマシン上で) 新しいプロセスを開始し、そのプロセス参照番号を返します。
プロセスが作成できない場合 (例えば、メモリ不足) 、New processは0を返し、エラーが発生します。このエラーはON ERR CALLでインストールされたエラー処理メソッドを使用してとらえることができます。
methodには、新しいプロセスのプロセスメソッド名を指定します。4Dは新規プロセスのコンテキストを設定した後、このメソッドの実行を開始します。したがって、これがプロセスメソッドになります。
実行コンテキストがプリエンプティブモードをサポートし、method 引数で指定したメソッドが"スレッドセーフ"であると宣言されていた場合、新規4D プロセスはアプリケーションがコンパイルモードで実行じにプリエンプティブスレッドで実行されます。詳細な情報については、プリエンプティブ4Dプロセス のページを参照してください。
stack 引数を使用すると、プロセスのスタックのために割り当てられたメモリ量を指定することができます。この空間が、メソッド呼び出し、ローカル変数、サブルーチンの変数、スタックされたレコードを”積み上げる”ためのメモリーです。
注: スタックはプロセスの合計メモリではありません。各プロセスはレコードやインタープロセス変数等のためにメモリを共有します。またプロセスはプロセス変数 の保持に追加のメモリを使用します。スタックには 4D の情報のさまざまな項目が格納されます。スタックに格納される情報の量は、ネストしたメソッドの呼び出し 数、前のフォームが閉じられる前に開かれたフォームの数、ネストしたメソッドで使用されるローカル変数のサイズに基づきます。
nameには新しいプロセスの名前を指定します。シングルユーザーモードでは、ここで指定した名前がランタイムエクスプローラーのプロセスリストに表示され、この新しいプロセスに対して PROCESS PROPERTIES コマンドを実行するとこの名前が返されます。この引数は省略することができます。省略した場合、プロセス名は空の文字列になります。ローカルスコープのプロセスを作成するには、名前の先頭にドルサイン ($) をつけます。
重要: クライアント/サーバーにおいて、ローカルプロセスはデータにアクセスしてはいけないことに注意してください。詳細な情報については、グローバルプロセスとローカルプロセス の章を参照してください。
一つ以上のparam引数を使用して、プロセスメソッドに引数を渡す事ができます。サブルーチンにパラメータを渡すのと同じ要領でプロセスメソッドに引数を渡します(の章を参照して下さい)。プロセスメソッドは、新規プロセスのコンテキスト内で実行を開始する際に、$1、$2、等に引数の値を受け取ります。メソッドに対して配列を引数として受け渡すことができない点に留意してください。それに加え、New processコマンドのコンテキストでは以下の条件も考慮する必要があります:
この最後の引数を指定した場合、4Dははじめにnameに指定した名前を持つプロセスが既に実行されているかどうかを調べます。同一名のプロセスが存在する場合、4Dは新規プロセスを開始せずにその名前を持つプロセスのプロセス番号を返します。
以下のプロジェクトメソッドがある時: 
  ` ADD CUSTOMERS
 SET MENU BAR(1)
 Repeat
    ADD RECORD([Customers];*)
 Until(OK=0)メニューバーエディタでカスタムメニュー項目にこのプロジェクトメソッドを指定し、新規プロセス開始チェックボックスをチェックしている場合、4Dはそのメソッドを実行する新規プロセスを自動的に開始します。SET MENU BAR(1)を実行すると、この新規プロセスに対してメニューバーが追加されます。ウィンドウ (Open windowコマンドでオープンするウインドウ) が何も存在しない場合、ADD RECORDコマンドを実行することにより、自動的にウィンドウが開かれます。
カスタムのコントロールパネルのボタンをクリックすると、“Add Customers”プロセスが開始されるようにするには、以下のようにします:
  ` bAddCustomers button object method
 $vlProcessID:=New process("Add Customers";0;"Adding Customers")このボタンは、先に作ったメニュー項目と同じことを行います。
メニュー項目を選択したり、このボタンをクリックすると、プロセスを開始 (そのプロセスが存在しない場合) またはプロセスを前面に配置 (そのプロセスが既に実行中の場合) したい場合、以下のようにSTART ADD CUSTOMERSメソッドを作成することができます:
  ` START ADD CUSTOMERS
 $vlProcessID:=New process("Add Customers";0;"Adding Customers";*)
 If($vlProcessID#0)
    BRING TO FRONT($vlProcessID)
 End ifbAddCustomers のオブジェクトメソッドは以下のようになります:
  ` bAddCustomers button object method
 START ADD CUSTOMERSメニューバーエディタでADD CUSTOMERSメソッドをSTART ADD CUSTOMERSメソッドと置き換え、メニュー項目の新規プロセス開始チェックボックスを選択解除します。
	プロダクト: 4D
	テーマ: プロセス
	番号: 
        317
        
        
        
	
	変更: 4D 2004.3
	変更: 4D v16 R4
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	ランゲージリファレンス ( 4D v20)
	
	
	ランゲージリファレンス ( 4D v20.1)
	
	
	
 コメントを追加
コメントを追加