after(3)

延遲一段時間之後執行一個命令 · man3 · 繁體中文

after(3tcl) Tcl Built-In Commands after(3tcl)

 

after - 延遲一段時間之後執行一個命令

after ms

after ms ?script script script ...?

after cancel id

after cancel script script script ...

after idle ?script script script ...?

after info ?id?

 


這個命令被用於延遲執行程式或者在將來某時在後臺執行一個命令。它有幾種形式,依靠給命令的第一個引數(來區分):

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 ms 和 after idle 形式假定應用是事件驅動的: 除非應用進入事件迴圈否則延遲命令將不被執行。在通常不事件驅動的應用中,如 tclsh,用 vwait 和 update 命令進入事件迴圈。

bgerror

cancel, delay, idle callback, sleep, time

寒蟬退士

2001/06/21

http://cmpp.linuxforum.net

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

7.5 Tcl