Scroll to navigation

after(3tcl) Tcl Built-In Commands 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


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

Ms 必须是整数,给出以毫秒为单位的时间。命令在睡眠(sleep) ms 毫秒之后返回。当命令在睡眠的时候,应用不响应事件。
在这种形式中,命令立即返回,它安排一个 Tcl 命令在 ms 毫秒之后作为事件处理器(handler)来运行。在给定时间,命令将被精确的执行一次。延迟的命令是通过连接(concatenate)所有的 script 参数形成的,这与 concat 命令的方式(fashion)一样。命令将在全局层次上执行(在任何 Tcl 过程的上下文之外)。在执行延迟命令时如果有错误发生,则使用 bgerror 机制来报告错误。after 命令返回一个标识符,after cancel 命令用它来取消延迟的命令。
取消前面安排的延迟命令的执行。Id 指示要取消那条命令;它必须是前面 after 命令返回的。如果用 id 给出的命令已经执行了则 after cancel 命令不起作用。
这个命令也取消一个延迟命令的执行。用空格分隔符来连接 script 参数(如同在 concat 命令中那样)。如果有一条等待的命令与这个字符串匹配,则取消它并永不执行;如果当前没有这样的等待命令则 after cancel 命令不起作用。
用空格分隔符连接 script 参数(如同在 concat 命令中那样),并被作为一个空闲回调(idle callback)来安排结果脚本在以后执行。下次进入事件循环并且没有事件要处理(的时候),这个脚本被精确的执行一次。命令返回一个标识符,after cancel 命令用它来取消延迟的命令。在执行延迟命令时如果有错误发生,则使用 bgerror 机制来报告错误。
这个命令返回关于存在的事件处理器的信息。如果没提供 id 参数,命令为所有通过 after 命令给这个解释器建立的事件处理器返回一个标识符的列表。如果提供了 id,它指定一个现存的处理器;id 必须是以前调用 after 返回的值并且仍未被触发或取消。这种情况下命令返回一个有两个元素的列表。列表的第一个元素是与 id 关联的脚本,第二个元素要么是 idle 要么是 timer,指示它是那种类型的事件处理器。

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

参见 SEE ALSO

bgerror

关键字 KEYWORDS

cancel, delay, idle callback, sleep, time

[中文版维护人]

寒蝉退士

[中文版最新更新]

2001/06/21

《中国 Linux 论坛 man 手册页翻译计划》:

http://cmpp.linuxforum.net

7.5 Tcl