49

I have an application that runs many threads. Each thread should have a timer that checks for something in that thread's scope. My question is: Which timer I should use and what is the difference between them?

BJ Myers
  • 6,617
  • 6
  • 34
  • 50
dlock
  • 9,447
  • 9
  • 47
  • 67
  • 1
    I believe the Windows.Forms.Timer may only run on the UI thread. I know that it is inaccurate and will drift. Based on your question I would look into the TPL (Task Parallel Libray). – Brettski Dec 26 '10 at 05:23

1 Answers1

82

This article provides an excellent comparison and should contain the information you need: Comparing the Timer Classes in the .NET Framework Class Library:

                                    Windows.Forms  System.Timers         System.Threading 
Timer event runs on what thread?    UI thread      UI or worker thread   Worker thread 
Instances are thread safe?          No             Yes                   No 
Familiar/intuitive object model?    Yes            Yes                   No 
Requires Windows Forms?             Yes            No                    No 
Metronome-quality beat?             No             Yes*                  Yes* 
Timer event supports state object?  No             No                    Yes 
Initial timer event schedulable?    No             No                    Yes 
Class supports inheritance?         Yes            Yes                   No

* Depending on the availability of system resources (for example, worker threads)
Mitch Wheat
  • 295,962
  • 43
  • 465
  • 541