after

ReferenceTOPKeywords

コマンド名

after - 指定された時間が経過した後にコマンドを実行します。

構文

after ms
after ms ?script script script ...?
after cancel id
after cancel script script ...
after idle script ?script script ...?
after info ?id?

解説

本コマンドは、プログラムの実行を遅らせたい場合、あるいはコマンドをバックグラウンドで未来に実行させたい場合に用います。コマンドへの最初の引数によって、いくつかのフォーマットがあります。

after ms
ms は必須な引数で、ミリセカンド単位の整数で待ち時間を与えます。コマンドはmsミリセカンドを待った後に戻ります。コマンドがスリープ状態になっている間、アプリケーションはイベントに応答しません。
 
after ms ?script script script ...?
この形式の場合、本コマンドは即座に制御を返すと同時に、イベントハンドラとして機能し、該当 Tcl コマンドをmsミリセカンド 後に遅延実行します。コマンドは、必ず1度だけ確実に実行されます。遅延コマンドは、 concat コマンドと同じ方式で、全てのscript 引数を連結したものになります。遅延コマンドはグローバルレベル ( 全 Tcl プロシージャの外 ) で実行されます。遅延コマンドを実行している間にエラーが発生した場合は、 bgerror 方式でエラーを報告します。after コマンドが返す識別子は、 after cancel コマンドが遅延コマンド実行をキャンセルするために使います。
 
after cancel id
以前にスケジュールされ、遅延コマンドの実行をキャンセルします。idは取り消されるべきコマンドを示しま。idは以前に実行されたafter コマンドからのリターン値でなければなりません。idによって与えられたコマンドが既に実行済みの場合、 after cancel コマンドは制御しません。
 
after cancel script script ...
同じくこのコマンドは、遅延コマンドの実行をキャンセルします。 script 引数は ( concat コマンドと同じ手法で)  スペースをセパレータとして連結されますこの文字と一致する実行待ちのコマンドがキャンセルされます。一致するコマンドが存在しない場合、 after cancel 制御しません。
 
after idle ?script script script ...?
script 引数はconcatコマンドと同じ手法で、スペースをセパレータとして連結されます。そしてこの連結結果 のスクリプトを後で実行するアイドル コールバックとして用意します。このスクリプトは確実に1回だけ実行されます。その実行タイミングは次のイベントループに入った後の、他に実行すべきイベントがない時です。本コマンドの戻り値は、after cancel コマンドがキャンセル操作をするために使用する識別子となります。遅延コマンドを実行している間にエラーが発生した場合は、 bgerror方式でエラーを報告します。
 
after info ?id?
本コマンドは、現存するイベントハンドラに関する情報を返します。 Id 引数が省略された場合、このインタープリタにafter コマンドにによって作成された全てのイベントハンドラの識別 子リストを返します。Idが指定された場合、Idは現存するハンドラを示すものでなければなりません。このIdは本コマンド発行までに使われた after コマンドからのリターン値でなければなりません。指定されたIdがまだ起動されていない、もしくはキャンセルされていない場合に限り、本コマンドは2つのエレメントによって構成されるリストを返します。リストの最初のエレメントはIdと関連しているスクリプトで、第2のエレメントはidle又はtimer の何れかであり、これはIdがどのような種類のイベントハンドラであるかを示しています。
 

after ms 及び after idle フォーマットのコマンドは、相手アプリケーションがイベント駆動タイプであると想定しています。アプリケーションがイベントループに入らない限り、遅延コマンドは実行されません。tclshのようなイベント駆動ではないアプリケーションにおいて、イベントループに入るためには vwait 及び updateコマンドを使います。

参照

bgerror concat update vwait

キーワード

cancel, delay, idle callbacksleep, time


Copyright © 1990-1994 The Regents of the University of California. Copyright © 1994-1996 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.