# after

Команда after указывает, что некоторая команда должна быть выполнена с задержкой по времени.

          after ms
          after ms ?script script script...?
          after cancel id
          after cancel script script script...
          after idle ?script script script...?
          after info ?id?

## ОПИСАНИЕ

Команда используется для того, чтобы отложить выполнение программы или выполнить указанную команду в фоновом режиме в некоторый момент в будущем. У команды есть несколько форм, зависящих от ее первого аргумента.

after ms
  Ms - целое число, задающее задержку в миллисекундах. Команда обеспечивает задержку на соответствующее число миллисекунд до своего завершения. Во время задержки приложение не реагирует на события.
after ms ?script script script...?
  В этой форме команда завершается немедленно, но при этом она обеспечивает выполнение Tcl-команды script script script через соответствующее время. Команда выполняется ровно один раз в установленный момент времени. Команда формируется объединением всех перечисленных аргументов script таким же образом, как при выполнении команды concat. Команда выполняется на глобальном уровне (вне контекста какой-либо Tcl-процедуры). Ошибки во время выполнения команды (если они происходят) обрабатываются с помощью процедуры bgerror. Команда after в этой форме возвращает идентификатор, который может быть использован для отмены отложенной команды с помощью команды after cancel.
after cancel id
  Отменяет исполнение ранее заявленной отложенной команды. Id определяет, какая именно команда будет отменена. Значение id должно совпадать со значением, возвращенным предыдущей командой after. Если соответствующая команда уже выполнена, команда after cancel игнорируется.
after cancel script script...
  Эта команда также отменяет выполнение ранее заявленной отложенной команды. Все перечисленные скрипты script объединяются через пробел таким же образом, как при выполнении команды concat. После чего ищется отложенная команда с аналогичным скриптом. Если такая команда будет найдена, ее исполнение будет отменено. В противном случае команда after cancel игнорируется.
after idle script ?script script...?
  Все перечисленные скрипты объединяются через пробел таким же образом, как при выполнении команды concat. Сформированная таким образом Tcl команда выполняется позже. Она выполняется ровно один раз в первом цикле обработчика событий, в котором не будет других необработанных событий. Команда after idle возвращает идентификатор, который может быть использован для отмены отложенной команды. Ошибки во время выполнения команды (если они происходят) обрабатываются с помощью процедуры bgerror.
after info ?id?
  Эта команда используется для получения информации об отложенных командах. Если аргумент id отсутствует , то возвращает список идентификаторов отложенных команд. Если аргумент id указан и соответствует идентификатору отложенной команды, которая не отменена и еще не выполнена, возвращается список из двух элементов. Первый элемент списка - Tcl-скрипт соответствующей команды, второй - idle или timer в зависимости от того, по какому событию предполагается вызов команды.

Команды after ms и after idle предполагают, что приложение управляется событиями. Отложенные команды не выполняются, если в приложении не активизирован цикл обработки событий. В приложениях, в которых он обычно не активизирован, таких как tclsh, цикл обработки событий может быть активизирован с помощью команд vwait и update.