ThreadTimer plug-in: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
m (Cleaned & Fixed links)
 
Line 8: Line 8:
It is available since Start until Stop, it ticks in desired interval and calls NSIS function.
It is available since Start until Stop, it ticks in desired interval and calls NSIS function.
It can be created for a whole life-cycle of installer because it is NOT tied with any installer page or nsDialogs page.
It can be created for a whole life-cycle of installer because it is NOT tied with any installer page or nsDialogs page.
I am using this plugin for creating cool-looking Graphical Installers: [http://www.unsigned-softworks.sk/installer www.unsigned-softworks.sk/installer] (see image below)
[[File:SkinnedControls-Example.jpg]]


== How To Use ==
== How To Use ==
Line 95: Line 91:


== Credits ==
== Credits ==
*Version 1.0 by [[User:Slappy|Slappy]] Graphical installers: [http://www.unsigned-softworks.sk www.unsigned-softworks.sk]
*Version 1.0 by [[User:Slappy|Slappy]] Graphical Installer: [http://www.graphical-installer.com www.graphical-installer.com]
[[Category:Plugins]]
[[Category:Plugins]]

Latest revision as of 05:35, 10 December 2018

Download Link

v1.1.1 (updated 14th, July 2012) by jiake ThreadTimer_v1.1.1.7z (90 KB), with tlibc static library.

v1.1 (updated October 2011) by Slappy ThreadTimer.zip (27 KB) Forum thread

Description

ThreadTimer plug-in allows you to create simple Timer which runs in a separate thread. It is available since Start until Stop, it ticks in desired interval and calls NSIS function. It can be created for a whole life-cycle of installer because it is NOT tied with any installer page or nsDialogs page.

How To Use

See simple example below for fast start.

ThreadTimer::Start Function

Initializes Timer and starts it immediately. NSIS Function will be called first time Interval milliseconds after calling Start.

Parameters

/NOUNLOAD

This must be defined! Plug-in will crash without this parameter! Note: version 1.1.1 do not need.

Interval

Interval for timer [milliseconds]. Timer ticks each Interval and calls NSIS Function.

Ticks

Number of ticks for Timer. 0 or -1 for infinite loop. (v1.1.1, any value that less than or equal to 0 meant infinite loop).

NSIS Function

Address of NSIS function to call from plug-in. Use GetFunctionAddress to obtain this address of your function.

ThreadTimer::Stop Function

Stops the timer immediately.


Example

Function TryMe
  MessageBox MB_OK "TryMe"
FunctionEnd
 
Function TimerExample
  GetFunctionAddress $2 TryMe
  ; Note: version 1.1.1 do not need /NOUNLOAD switch. 
  ThreadTimer::Start /NOUNLOAD 2345 8 $2 ; Timer ticks every 2345 milliseconds, totally 8 times calls TryMe
FunctionEnd
 
Function TimerExampleInfiniteLoop
  GetFunctionAddress $2 TryMe
  ; Note: version 1.1.1 do not need /NOUNLOAD switch.
  ThreadTimer::Start /NOUNLOAD 1234 -1 $2 ; Timer ticks every 1234 milliseconds, it calls function TryMe in infinite loop until ThreadTimer::Stop is called
FunctionEnd
 
Function .onGUIEnd
  ThreadTimer::Stop
FunctionEnd

Notes

There are several important facts to know about this plug-in:

  • Timer runs in separate thread. If you forget to call ThreadTimer::Stop it will still run however your NSIS installer exists! This may cause (and often causes) crash!
  • There is no error handling in this version, be careful with parameters!
  • If you need to execute some function periodically in whole life of installer (on each page, also while installing files, ...) use ThreadTimer::Start in your .onInit function.
  • It is nice habit to call ThreadTimer::Stop in your .onGUIEnd function.
  • Plug-in does not use SetTimer and KillTimer WinAPI functions. Instead it creates a new thread and uses Sleep() to wait for desired Interval. There might be a little inaccuracy in time periods!

Versions History

1.1.1 (July 2012)(by jiake)
  • Update it so that you can remove /NOUNLOAD switch when using in NSIS
  • Remove unused code from source
  • Size 3.5kB(ANSI)/3kB(Unicode)


1.1 (October 2011)
  • Second version
  • Unicode & ANSI builds are available
  • Sources included
  • Pure C code - removed all dependencies on CRT but included TinyC lib
  • Removed decorated names of calls
  • Size ~4kB


1.0 (2011)
  • First version
  • Unicode & ANSI builds are available
  • Sources included
  • Removed dependency on MS VCR 9.0 runtime (Bigger size of dll).

Credits