94

.Net Frameworkに5つのタイマークラスがあるのはなぜですか。つまり、次のとおりです。

  1. System.Timers.Timer
  2. System.Threading.Timer
  3. System.Windows.Forms.Timer
  4. System.Web.UI.Timer
  5. System.Windows.Threading.DispatcherTimer

Timerクラスにいくつかのバージョンがあるのはなぜですか?そして、それらの違いは何ですか?

4

3 に答える 3

35

ここでは、主なタイマーの説明と、最も注目に値するポイントを示します。

Winforms.Timer

  • 特定の時間に発券することが保証されていない UI スレッドのティック
  • UI スレッドがアイドル状態になるまでティックを遅らせる
  • UI スレッドがビジーの場合、ティックをスキップします

DispatcherTimer

  • UI スレッドで呼び出される
  • ティックを生成するために必要な「アイドル」レベルの優先順位を設定できます
  • ティックをスキップします

Threading.Timer

  • スレッドプールからのワーカースレッドのティック - スレッドを指定するオプションはありません
  • ティックは常に時間通りに発生します
  • スキップされるものはありません - 以前のティックをまだ処理している間は、新しいティックを防ぐ必要があります
  • 未処理の例外はアプリケーションをクラッシュさせます

Timers.Timer

  • スレッド化タイマーのラッパー
  • CLR スレッドプールから取得したワーカー スレッドをティックします。
  • SynchronizationObject を指定することで、特定のスレッドを強制的にティックすることができます
  • ティックは常に時間通りに発生します
  • どれもスキップされません
  • 静かに例外を食べます
于 2019-08-30T18:00:58.240 に答える
12

Timers.Timer定期的なイベントを生成するオプションを使用して、設定された間隔の後にイベントを生成します。MSDN

Windows.Forms.Timerwinforms のコントロールです。

Web.UI.Timer定義された間隔で非同期または同期の Web ページ ポストバックを実行します。MSDN

Threading.Timerコールバックのタイマーです。作業用の新しいスレッドを作成します。スレッド プール スレッドによって提供されます。MSDN

したがって、これらのタイマーにはさまざまな目的があり、さまざまなツールによって提供されます。

于 2018-03-28T16:27:34.170 に答える