Why there are 5 Versions of Timer Classes in .NET?

后端 未结 2 811
隐瞒了意图╮
隐瞒了意图╮ 2020-11-28 06:29

Why are there five timer classes in the .Net framework, namely the following:

  1. System.Timers.Timer
  2. System.Threading.Timer
相关标签:
2条回答
  • 2020-11-28 07:10

    Here's a description of the primary timers and the points that i find to be the most noteworthy.

    Winforms.Timer

    • ticks on UI thread not guaranteed to ticket at a specific time
    • ticks delayed until UI thread is idle
    • will skip ticks if the UI thread is busy

    DispatcherTimer

    • invoked on UI thread
    • can set priority for what level of 'idle' is required to generate a tick
    • will skip ticks

    Threading.Timer

    • ticks on a worker thread from threadpool - no option for specifying thread
    • ticks are always fired on time
    • none are skipped - you must guard against new ticks while you're still processing a former tick
    • unhandled exceptions will crash the application

    Timers.Timer

    • wrapper around threading timer
    • ticks on a worker thread taken from the CLR threadpool
    • can force to tick on a specific thread by supplying a SynchronizationObject
    • ticks are always fired on time
    • none are skipped
    • silently eats exceptions
    0 讨论(0)
  • 2020-11-28 07:13

    Timers.Timer generates an event after a set interval, with an option to generate recurring events. MSDN

    Windows.Forms.Timer is a Control for winforms.

    Web.UI.Timer performs asynchronous or synchronous Web page postbacks at a defined interval. MSDN

    Threading.Timer is the timer for Callbacks. Creates a new Thread for working. Served by thread pool threads. MSDN

    So, these timers have different purposes, also they are served by different tools.

    0 讨论(0)
提交回复
热议问题