QUIT 4D
QUIT 4D {( time )}
引数 | 型 | 説明 | |
---|---|---|---|
time | Integer | → | サーバ終了までの時間 (秒) |
説明
QUIT 4Dコマンドは、カレントの4Dアプリケーションを終了してデスクトップに戻ります。
4D(ローカルまたはリモートモード)、または4D Serverどちらでコマンドが実行されたにより、このコマンドは異なる処理を行います。
ローカルモードおよびリモートモードの4D
QUIT 4Dを呼び出した後、カレントのプロセスは実行を停止し、4Dは以下のように振舞います:
- On Exitデータベースメソッドがある場合、4Dはローカルプロセスを新しく作成し、その内でこのデータベースメソッドの実行を開始します。例えばこのデータベースメソッドを使用して、開発者は他のプロセスに、プロセス間通信を駆使し、 データ入力やOn Startupデータベースメソッドで開始された処理 (他のデータサーバーへの接続等) を停止するよう、通知できます。4Dは、いずれ終了してしまうことを覚えておいてください。On Exitデータベースメソッドは、必要なすべてのクリーンアップ操作や終了を実行しますが、終了を拒否することはできないため、ある時点でデータベースは終了します。
- On Exitデータベースメソッドがない場合、4Dは実行プロセスそれぞれを区別せずに1つずつアボートします。
ユーザがデータ入力を実行している場合には、レコードはキャンセルされ、保存されません。
現在開いているウィンドウ上で行われたデータ入力の変更内容をユーザに保存させたい場合は、プロセス間通信を使って、データベースが終了されようとしていることを他のすべてのユーザプロセスに通知することができます。これを実行するには、以下の2つの方法があります:
- この処理を、QUIT 4Dを呼び出す前に、カレントのプロセスで行う。
- この処理を、On Exitデータベースメソッド内で行う。
3番目の方法もあります。QUIT 4Dコマンドを呼び出す前に、ウィンドウで行われた処理が登録を必要とするかどうかをチェックします。このケースの場合は、ユーザにこのウインドウの内容をを保存するか、または取り消すかを尋ね、それから再度、「終了」を選択するか尋ねます。しかし、ユーザインタフェースの観点から見ると、最初の2つの方法を使用するのをお勧めします。
注: ローカル、またはリモートモードの4Dでは、time引数を使用できません。
4D Server (ストアドプロシージャ)
QUIT 4Dコマンドを、サーバマシン上のストアドプロシージャで実行できます。その場合、オプションの引数timeを受け付けます。
time引数により、アプリケーションが実際に終了するまでの4D Serverのタイムアウトを設定し、クライアントマシンが接続を切るための時間を与えることができます。timeには秒単位の値を渡します。この引数は、サーバマシン上で実行された際にのみ考慮されます。ローカルモードまたはリモートモードの4Dでは、この引数は無視されます。
time引数を渡さない場合、終了する前に4D Serverはすべてのクライアントマシンが接続を切るまで待機します。
4Dとは異なり、4D ServerによるQUIT 4Dの処理は非同期的に行われます。つまり、このコマンドの実行後、コマンドの呼び出しを行ったメソッドが中断されることはありません。
On Server Shutdownデータベースメソッドが存在する場合、渡された引数に基づき、time引数で設定された遅延後またはすべてのクライアントの接続が解除された後、このメソッドが実行されます。
ストアドプロシージャ内で使用された場合のQUIT 4Dコマンドの動作は、4D Serverの「ファイル」メニューから「終了」コマンドを選択した場合と同じです。すなわち、各クライアントマシンにダイアログボックスが表示され、サーバが終了することを通知します。
例題
以下のプロジェクトメソッドは、ファイルメニューの終了コマンドに割り当てられます。
// M_FILE_QUIT プロジェクトメソッド
CONFIRM("本当に終了しますか?")
If(OK=1)
QUIT 4D
End if