tclTask {tcltk2} | R Documentation |
Tcl allows fo scheduling execution of code on the next event loop or after a
given time (after
Tcl command). tclTaskXxx()
functions use it to
schedule execution of R code with much control from within R (central
management of scheduled tasks, possibility to define redoable tasks, use of S3
objects to keep track of tasks information. The tclAfterXxx()
functions
are low-level access to the Tcl after
command.
# Convenient tclTask objects management tclTaskSchedule(wait, expr, id = "task#", redo = FALSE) tclTaskRun(id) tclTaskGet(id = NULL, all = FALSE) tclTaskChange(id, expr, wait, redo) tclTaskDelete(id) # Low-level Tcl functions tclAfter(wait, fun) tclAfterCancel(task) tclAfterInfo(task = NULL)
wait |
Time in ms to delay the task (take care: approximative value, depends on when event loops are triggered). Using a value lower or equal to zero, the task is scheduled on the next event loop. |
fun |
Name of the R function to run (you may not supply arguments to this function, otherwise it is not scheduled properly; take care of scoping, since a copy of the function will be run from within Tcl). |
expr |
An expression to run after 'wait'. |
id |
The R identifier of the task to schedule, if this id contains
# , then, it is replaced by next available number, but you cannot
schedule more than a thousand tasks with the same name (the system will
give up well before, anyway). If NULL in tclTaskGet() ,
retrieve the list of all existing tasks. |
all |
If id = NULL , all = TRUE indicate to list all tasks,
including hidden ones (with id starting with a dot). |
redo |
Should the task be rescheduled n times, indefinitely
(redo = TRUE ) or not (redo = FALSE , default, or a value <=
0). |
task |
A Tcl task timer, or its name in Tcl (in the form of 'after#xxx'). |
The tclAfterXxx()
functions return a 'tclObj' with the result of the
corresponding Tcl function. tclAfter()
returns the created Tcl timer in
this object. If 'task' does not ecxists, tclAfterInfo()
returns
NULL
.
tclTaskGet()
returns a 'tclTask' object, a list of such objects, or
NULL
if not found.
The four remaining tclTaskXxx()
functions return invisibly TRUE
if the process is done successfully, FALSE
otherwise.
tclTaskRun()
forces running a task now, even if it is scheduled later.
Philippe Grosjean
tclFun
, addTaskCallback
,
Sys.sleep
## Not run: ## These cannot be run by examples() but should be OK when pasted ## into an interactive R session with the tcltk package loaded # Run just once, after 1 sec test <- function () cat("==== Hello from Tcl! ====\n") tclTaskSchedule(1000, test()) Sys.sleep(2) # Run ten times a task with a specified id test2 <- function () cat("==== Hello again from Tcl! ====\n") tclTaskSchedule(1000, test2(), id = "test2", redo = 10) Sys.sleep(1) # Run a function with arguments (will be evaluated in global environment) test3 <- function (txt) cat(txt, "\n") msg <- "==== First message ====" tclTaskSchedule(1000, test3(msg), id = "test3", redo = TRUE) Sys.sleep(2) msg <- "==== Second message ====" Sys.sleep(2) # Get info on pending tasks tclTaskGet() # List all (non hidden) tasks tclTaskGet("test2") # List all active Tcl timers tclAfterInfo() # Change a task (run 'test3' only once more, after 60 sec) tclTaskChange("test3", wait = 60000, redo = 1) Sys.sleep(1) # ... but don't wait so long and force running 'test3' right now tclTaskRun("test3") Sys.sleep(3) # finally, delete all pending tasks tclTaskDelete(NULL) ## End(Not run)