4D v16

プロセス

ホーム

 
4D v16
プロセス

プロセス    


 

 



ビデオ中で説明されている操作に加え、以下の点にも留意してください。

プロセスは処理が実行される環境であり、各プロセスごとに以下の要素があります:
  • メモリ空間
  • カレントセレクション (テーブルごとにひとつ)
  • プロセス変数テーブル
  • インターフェース
  • など

プロセスとプロセスは複数の方法で通信できます:

  • インタープロセス変数
  • コマンドを使用したプロセス変数の読み書き
  • レコードやディスクファイルなど永続化したデータを利用
  • など

プロセスでは以下のことを行うこともできます:

  • 一定時間スリープさせる
  • 他のプロセスから指示があるまで一時停止させる

プロセスは、プロセス内で実行されているメソッドが終了したときに消去されます。
プログラムから強制的にプロセスをキルすることはできません。特定の条件でプロセスを終了するためには、プロセス中で実行されているメソッドを終了させるようプログラムします。 

プロセスは主に以下の目的で使用します:

  • 一括処理やバックグランドチェックなど、特別な処理を行うため
  • ツールパレットを表示する
  • 複数のウィンドウを同時に開いて作業させるため

4Dは内部的な処理のために自動でいくつかのプロセスを起動します。

プロセスはNew processコマンドで起動します:

 vProcessNumber:=New process(Method;Stack;Processname;Settings;...)

プロセスを起動するこのコードはメソッドに記述します。以下のようなスケルトンを使用できます:

 C_TEXT($1)
 If(Count parameters=0) // 引数が渡されない場合、新規プロセス作成コードを実行
    C_LONGINT(<>ProcessNumber)
    <>ProcessNumber:=New process("Display_Stats2";1024*1024;"Statistics";"Fictitious_Parameter") // プロセスを作成
 Else // メソッドが引数を受け取っていたら、プロセス内の処理を記述したコードを実行
    C_LONGINT($Window//ウィンドウコンテナーを作成
    $Window:=Open form window("STATS";Plain form window;Horizontally centered;Vertically centered)
    DIALOG("STATS") //ダイアログを表示
    CLOSE WINDOW($Window// ダイアログが閉じられたらウィンドウも閉じる
 End if

  • 引数なしでこのメソッドを呼び出すと、4Dはプロセスを作成し、そのプロセスの中でこのメソッドを実行します。
  • そのときメソッドには引数が渡されます。
  • 最初のメソッドが終了します。 
  • プロセス内で実行されているメソッドが終了するまで、プロセスは存在します。
プロセスの実行をトレースするためには、別プロセスもトレースボタンをクリックします。すると別のデバッガーウィンドウが開いて、それぞれのプロセスごとにデバッグが可能となります。

In this video, we're going to learn about the life cycle of a process: birth, life and death.

Processes are often assimilated into multi-tasking jobs. They allow you to create several jobs simultaneously, without having to complete the first process before starting the second.

Let’s say that you want to access the statistic module that we set up in the previous videos. You want it to remain active while you do something else.
To do that, we will start the method in a process and allow the user to refresh the statistics by clicking a button that we’ll add in the form.

First, we're going to create the call to the Statistics dialog in the navigation form. We will:

  • Duplicate a button
  • And call it Stats

and in its method, just like we did for the 1st dialog, we will:

  • Create a container
  • Display the Stats dialog
  • Then close the window again.

Let's test this. We have a Stats button that displays information that interests us and we obtain the statistics.

However, we can no longer work on our navigation form since it is placed in the foreground.

There is a way to work with several windows; in this case, it is preferable to work with several different processes, which is what we're going to do now.

You create a process using the New process command, which must be called from a method.
Then we indicate:

  • which method must be executed in the process
  • the stack
  • the name of the process
  • and any parameters.

In the present case, we're going to create a method for displaying Stats (note that the name is placed in quotes) and this method will contain the creation of the form.

  • The stack doesn't really matter
  • The name of the process will be Statistics
  • And we don't need any specific parameters.

In 4D, there is a star parameter that you can pass as the last parameter and which can be used with many commands. This lets you avoid creating the same process multiple times. We're not going to use it for now, but you can refer to the documentation for more details about its use.

Now let's see how this works. If we click on the Stats button:

  • We still have the Stats form that appears
  • but this time we have the possibility of working in one window or the other.
  • of closing the process
  • of displaying it again
  • and at this level, it is even possible to display several of them since we did not use the star parameter.

It would even be possible, assuming that we configured the year in the form, to have the stats from one year and the stats from another year, on two different screens.

It is important to understand that when we use processes, each one has its own environment; in other words, if we perform a calculation here, we obtain certain items of information regardless of how many records there are.
We can decide to only take a few of them and our statistics will always be calculated based on all information contained in the table.

It is therefore necessary to understand that a process will have:

  • its own selections
  • and its own variables

If we have 2 processes executing the same method, each one can have different information.

When several processes are created and we ask for a trace, 4D shows all the processes that were created:

  • standard processes created by 4D
  • plus the ones that we have created, like the Statistics process.

So it is possible to trace it and when we are going to "calculate", it's the method of the button that we clicked on that is traced.

If we trace another process, we can see the trace mode of this process appear here.

At the beginning of this video, we mentioned the creation, life and death of a process.

Let's look at these 3 stages:
1st, the creation of the process: New process is going to create it.

To trace what is running in a New process, you must use this button: a 2nd trace window appears for tracing the "Statistics" method that is being executed.

Next a method runs and during this period, the process is alive.

  • We can do a number of things such as:
  • inter-process exchanges
  • or drag and drop.

This process is killed when the method that was executed when it was created is finished:

  • Here, we go back to the initial method that was executed when the process was created
  • The window closes
  • The method ends
  • And the process is killed

If we do a trace, we no longer see the "Statistics" process.

 
 

 
プロパティ 

プロダクト: 4D
テーマ: プロセス

 
履歴 

 
ARTICLE USAGE

セルフトレーニング ( 4D v16)