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

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh