'''`[after]` idle``` schedules a script for evaluation at moment when the interpreter is idle. ** Synopsis ** : '''[after] idle''' ''script'' ?''script script ...''? ** See Also ** [Update considered harmful]: Why `after idle` should be used instead of `update` or `update idletasks`. ** Description ** Concatenates the ''script'' arguments together with space separators in the same manner as `[concat]`, arranges for the resulting script to be evaluated one time when the [Tcl event loop%|%event loop] has no active events to process, and returns an identifier that `[after cancel]` can use to cancel the evaluation. If an error occurs while executing the script the '''[bgerror%|%background error handler]''' is called. The event loop considers the system to be idle when there are no events ready to be evaluated in the normal queue. As long as any channel that is ready to be read or written and has an `[chan event]` event handler associated with it, the system is not considered idle because the event handler is continuously placed into the active queue until the channel is no longer ready. ---- A typical, and perhaps the most important use of `after idle`, is to [keep a GUI alive during a long calculation]. A routine can perform a little work and then reschedule itself for later: ====== proc dostuff {} { do something after idle [list after 0 [namespace which dostuff]] } ====== <> after | Command | Tcl syntax help