如何逐个评估TCL回调?

时间:2012-01-05 17:21:08

标签: events callback tcl stdin

假设为stdin注册了一些回调。

fileevent stdin readable thatCallback

这意味着在执行update命令期间,当thatCallback处有可用输入时,它会一次又一次评估stdin

如何在update的每次通话中仅对thatCallback进行一次评估?

1 个答案:

答案 0 :(得分:2)

对于update的每次使用,任何特定的事件处理程序只执行一次。那是因为update做的是检查哪些事件处理程序可以运行(以及哪些事件实际排队),然后执行所有准备好的事件。它不会等待进一步的事件发生。

现在,fileevent仍将被注册,以便下次进入事件循环时,它可能会再次运行。如果您只想要一次fileevent,请在处理程序运行时取消注册。例如:

fileevent stdin readable thatCallback
proc thatCallback {} {
    # First, de-register ourselves so we're a one-shot
    fileevent stdin readable {}
    # Now do the rest of it here...
}