フォーム: 並行実行の使い方
V10以降であれば、タスク特性に「並行実行」という設定があります。
タスク特性の拡張ラベルの一番上です。
この機能を使うと、C/S環境下で、独立した複数のプログラムを動作させることが可能になります。
通常のMagicでは、複数のタスク画面を開いても、実際に操作できるのは単一タスクです。
親 → 子 → 孫 というように階層構造を持っています。
孫タスク(プログラム)まで開いている状態で、親タスク(プログラム)をクリックすると、子タスク(プログラム)、孫タスク(プログラム)は終了して、親タスク(プログラム)に制御が移ります。
もし、複数画面を開いて、一方のタスク(プログラム)操作中に、そのタスクを終わらせず(タスク後処理を通らない)、別のタスク(プログラム)を操作しようと思えば、従来の方法では、Magicを複数起動することになります。
しかし、この並行実行という機能を使えば、Magic本体は一回だけの起動で、一方を終了させず、他方に制御を移すことが可能になります。
例えば、顧客マスタや商品マスタ等、よく使うマスタのメンテナンスプログラムを常に表示されておくというような場合に重宝します。
尚、タスク特性の「並行実行」にチェックを付けると、デフォルトで「メインプログラムの初期化」と「グローバル変数の複写」にもチェックが入りますが、意味を理解して使わないと結構危険です。
同様に、「単一インスタンス」も重要な意味を持ちますので理解が必要です。
以下、簡単にメモ書きしておきます。
並行実行 | 親タスクのみ、チェックを付けることができます。 新規コンテキスト(セッション情報)を持ちます。 |
---|---|
メインプログラムの初期化 | チェックすると、このタスクの実行前に、メインプログラムのタスク前処理を実行します。 |
グローバル変数の複写 | SetParam関数によって値をセットしたグローバル変数を複写します。 |
単一インスタンス | 同じ並行実行タスクが2回以上コールされたとき、コールされる度に別のコンテキストを持って起動するか、既に起動されているプログラムにフォーカスをセットするだけで、同一プログラムを複数起動させないようにするかの指定に使います。 |
サンプルプログラムがあるので、それで動作確認をしてみると良いでしょう。