after.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
- '"
- '" Copyright (c) 1990-1994 The Regents of the University of California.
- '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: after.n,v 1.3.18.2 2004/10/27 14:23:41 dkf Exp $
- '"
- .so man.macros
- .TH after n 7.5 Tcl "Tcl Built-In Commands"
- .BS
- '" Note: do not modify the .SH NAME line immediately below!
- .SH NAME
- after - Execute a command after a time delay
- .SH SYNOPSIS
- fBafter fImsfR
- .sp
- fBafter fIms fR?fIscript script script ...fR?
- .sp
- fBafter cancel fIidfR
- .sp
- fBafter cancel fIscript script script ...fR
- .sp
- fBafter idle fR?fIscript script script ...fR?
- .sp
- fBafter info fR?fIidfR?
- .BE
- .SH DESCRIPTION
- .PP
- This command is used to delay execution of the program or to execute
- a command in background sometime in the future. It has several forms,
- depending on the first argument to the command:
- .TP
- fBafter fImsfR
- fIMsfR must be an integer giving a time in milliseconds.
- The command sleeps for fImsfR milliseconds and then returns.
- While the command is sleeping the application does not respond to
- events.
- .TP
- fBafter fIms fR?fIscript script script ...fR?
- In this form the command returns immediately, but it arranges
- for a Tcl command to be executed fImsfR milliseconds later as an
- event handler.
- The command will be executed exactly once, at the given time.
- The delayed command is formed by concatenating all the fIscriptfR
- arguments in the same fashion as the fBconcatfR command.
- The command will be executed at global level (outside the context
- of any Tcl procedure).
- If an error occurs while executing the delayed command then the
- fBbgerrorfR mechanism is used to report the error.
- The fBafterfR command returns an identifier that can be used
- to cancel the delayed command using fBafter cancelfR.
- .TP
- fBafter cancel fIidfR
- Cancels the execution of a delayed command that
- was previously scheduled.
- fIIdfR indicates which command should be canceled; it must have
- been the return value from a previous fBafterfR command.
- If the command given by fIidfR has already been executed then
- the fBafter cancelfR command has no effect.
- .TP
- fBafter cancel fIscript script ...fR
- This command also cancels the execution of a delayed command.
- The fIscriptfR arguments are concatenated together with space
- separators (just as in the fBconcatfR command).
- If there is a pending command that matches the string, it is
- cancelled and will never be executed; if no such command is
- currently pending then the fBafter cancelfR command has no effect.
- .TP
- fBafter idle fIscript fR?fIscript script ...fR?
- Concatenates the fIscriptfR arguments together with space
- separators (just as in the fBconcatfR command), and arranges
- for the resulting script to be evaluated later as an idle callback.
- The script will be run exactly once, the next time the event
- loop is entered and there are no events to process.
- The command returns an identifier that can be used
- to cancel the delayed command using fBafter cancelfR.
- If an error occurs while executing the script then the
- fBbgerrorfR mechanism is used to report the error.
- .TP
- fBafter info fR?fIidfR?
- This command returns information about existing event handlers.
- If no fIidfR argument is supplied, the command returns
- a list of the identifiers for all existing
- event handlers created by the fBafterfR command for this
- interpreter.
- If fIidfR is supplied, it specifies an existing handler;
- fIidfR must have been the return value from some previous call
- to fBafterfR and it must not have triggered yet or been cancelled.
- In this case the command returns a list with two elements.
- The first element of the list is the script associated
- with fIidfR, and the second element is either
- fBidlefR or fBtimerfR to indicate what kind of event
- handler it is.
- .LP
- The fBafter fImsfR and fBafter idlefR forms of the command
- assume that the application is event driven: the delayed commands
- will not be executed unless the application enters the event loop.
- In applications that are not normally event-driven, such as
- fBtclshfR, the event loop can be entered with the fBvwaitfR
- and fBupdatefR commands.
- .SH "EXAMPLES"
- This defines a command to make Tcl do nothing at all for fINfR
- seconds:
- .CS
- proc sleep {N} {
- fBafterfR [expr {int($N * 1000)}]
- }
- .CE
- .PP
- This arranges for the command fIwake_upfR to be run in eight hours
- (providing the event loop is active at that time):
- .CS
- fBafterfR [expr {1000 * 60 * 60 * 8}] wake_up
- .CE
- .PP
- The following command can be used to do long-running calculations (as
- represented here by fI::my_calc::one_stepfR, which is assumed to
- return a boolean indicating whether another step should be performed)
- in a step-by-step fashion, though the calculation itself needs to be
- arranged so it can work step-wise. This technique is extra careful to
- ensure that the event loop is not starved by the rescheduling of
- processing steps (arranging for the next step to be done using an
- already-triggered timer event only when the event queue has been
- drained) and is useful when you want to ensure that a Tk GUI remains
- responsive during a slow task.
- .CS
- proc doOneStep {} {
- if {[::my_calc::one_step]} {
- fBafter idlefR [list fBafterfR 0 doOneStep]
- }
- }
- doOneStep
- .CE
- .SH "SEE ALSO"
- bgerror(n), concat(n), update(n), vwait(n)
- .SH KEYWORDS
- cancel, delay, idle callback, sleep, time