Table of Contents

Start Idler

This verb takes it's name from the “idle” handler in a compiled applescript. It can be used to re-execute a global script very quickly or continually without having to clog up the schedule events window. Scheduled events only have a granularity of 1 second anyway, but if you wanted something to run faster than that you'd need to use this. This verb can be called from anywhere. This is considered an advanced scripting topic and you should use the “execute script” verb whenever possible as opposed to this.

Usage:

start idler (text, name of a global script, Unit or Interface) handler (optional, name of a handler in the global script if not supplied the script will be run normally) in (optional, how long to wait in milliseconds before running the handler for the first time. Passing a value of 1000 would result in the first running of the hander in 1 second. After the first run the returned value from the script or handler will be used to schedule the next callback.)

Example

start idler (ThisScript) handler “StepTwo” in 500

on StepTwo()
  write log “your idle timer is running!"
  return 5000
end StepTwo

would execute the handler “on stepTwo()” in half a second. The return of 5000 would keep the callback happening every 5 seconds after that. You must return a value other than 0 to keep the idler running. If there is an unhandled error in the handler or if the handler returns 0 the idle callback will be stopped. You can change the timing of the next callback for whatever reason by returning a different number of milliseconds.

Note that this is not a perfect timer. When the callback will actually happen will be no sooner than the number of milliseconds that you request, but will be some small random amount more than that due to system and program load at the time that it expires.

The minimum value for a callback is 10ms but you definitely do not want to do that repeatedly for very long as you could definitely start to lag the program. While XTension will not let you set a callback in less than 10 milliseconds, there is little chance it will actually happen quite that quickly.

You can also execute handlers in unit ON scripts or in Interface scripts (like the DIY interface) with this verb. While the name parameter is optional if you’re starting a handler in a script because it can use the global (thisScript) value you must include the unit or interface name in order to have the idle timer be called back into either of those types of scripts.

Notes:

See Also: Stop Idler

History:

version 9.1 added support to run an idler callback in a units ON script or an Interface script