after(3tcl)

NAME
after - 延迟一段时间之后执行一个命令

总览 SYNOPSIS
after ms

after ms ?script script script ...?

after cancel id

after cancel script script script ...

after idle ?script script script ...?

after info ?id?

描述 DESCRIPTION

 这个命令被用于延迟执行程序或者在将来某时在后台执行一个命令。它有几种形式，依靠给命令的第一个参数(来区分):

after ms
    Ms 必须是整数，给出以毫秒为单位的时间。命令在睡眠(sleep) ms 毫秒之后返回。当命令在睡眠的时候，应用不响应事件。

after ms ?script script script ...?
    在这种形式中，命令立即返回，它安排一个 Tcl 命令在 ms 毫秒之后作为事件处理器(handler)来运行。在给定时间，命令将被精确的执行一次。延迟的命令是通过连接(concatenate)所有的 script 参数形成的，这与 concat 命令的方式(fashion)一样。命令将在全局层次上执行(在任何 Tcl 过程的上下文之外)。在执行延迟命令时如果有错误发生，则使用 bgerror 机制来报告错误。after 命令返回一个标识符，after cancel 命令用它来取消延迟的命令。

after cancel id
    取消前面安排的延迟命令的执行。Id 指示要取消那条命令；它必须是前面 after 命令返回的。如果用 id 给出的命令已经执行了则 after cancel 命令不起作用。

after cancel script script ...
    这个命令也取消一个延迟命令的执行。用空格分隔符来连接 script 参数(如同在 concat 命令中那样)。如果有一条等待的命令与这个字符串匹配，则取消它并永不执行；如果当前没有这样的等待命令则 after cancel 命令不起作用。

after idle script ?script script ...?
    用空格分隔符连接 script 参数(如同在 concat 命令中那样)，并被作为一个空闲回调(idle callback)来安排结果脚本在以后执行。下次进入事件循环并且没有事件要处理(的时候)，这个脚本被精确的执行一次。命令返回一个标识符，after cancel 命令用它来取消延迟的命令。在执行延迟命令时如果有错误发生，则使用 bgerror 机制来报告错误。

after info ?id?
    这个命令返回关于存在的事件处理器的信息。如果没提供 id 参数，命令为所有通过 after 命令给这个解释器建立的事件处理器返回一个标识符的列表。如果提供了 id，它指定一个现存的处理器；id 必须是以前调用 after 返回的值并且仍未被触发或取消。这种情况下命令返回一个有两个元素的列表。列表的第一个元素是与 id 关联的脚本，第二个元素要么是 idle 要么是 timer，指示它是那种类型的事件处理器。

命令的 after ms 和 after idle 形式假定应用是事件驱动的: 除非应用进入事件循环否则延迟命令将不被执行。在通常不事件驱动的应用中，如 tclsh，用 vwait 和 update 命令进入事件循环。

参见 SEE ALSO
bgerror

关键字 KEYWORDS
cancel, delay, idle callback, sleep, time

[中文版维护人]
寒蝉退士

[中文版最新更新]
2001/06/21

《中国 Linux 论坛 man 手册页翻译计划》:
http://cmpp.linuxforum.net