Desktop Functions:

   Smart Device Functions:

Show Recent Changes
Subscribe (RSS)
Misc. Pages
Helpful Tools
Suggested Reading
Website TODO List
Support Forum
Download Visual Studio Add-In

Terms of Use
Privacy Policy
SetTimer (user32)

C# Signature:

[DllImport("user32.dll", ExactSpelling=true)]
static extern IntPtr SetTimer(IntPtr hWnd, IntPtr nIDEvent, uint uElapse, TimerProc lpTimerFunc);
delegate void TimerProc(IntPtr hWnd, uint uMsg, IntPtr nIDEvent, uint dwTime);

// or alternatively
[DllImport("user32.dll", ExactSpelling=true)]
static extern IntPtr SetTimer(IntPtr hWnd, IntPtr nIDEvent, uint uElapse, IntPtr lpTimerFunc);

User-Defined Types:




Tips & Tricks:

Use the version that takes an IntPtr as last parameter and pass it IntPtr.Zero if you are going to handle the WM_TIMER message in your own override of WndProc.

Use the version that takes a delegate as last parameter if you don't explicitly handle the WM_TIMER message or if you don't override WndProc. In that case DefWndProc will invoke your callback when the time-out value elapses.

When using the version that takes a delegate make sure that the delegate is kept alive, i.e. there must be a managed reference to the delegate. Typically this means that after creating the delegate and before passing it to the SetTimer method you should asign it to some private field.

(The native method is actually prototyped to take an unsigned event ID, but because unsigned types are not CLS compliant, declaring it as signed makes it somewhat easier to work with.)

Best of luck.

Sample Code:

Please add some!

Alternative Managed API:


SetTimer on MSDN

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

Access directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version