web-dev-qa-db-ja.com

.NETにタイマークラスの5つのバージョンがあるのはなぜですか?

.Netフレームワークに次の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クラスにはいくつかのバージョンがあるのはなぜですか?そして、それらの違いは何ですか?

64

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

Windows.Forms.Timerはwinformsのコントロールです。

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

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

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

11
Victor Gorban

プライマリタイマーと、最も注目に値するポイントについて説明します。

Winforms.Timer

  • 特定の時間にチケットを発行することが保証されていないUIスレッドのチェック
  • uIスレッドがアイドルになるまで遅延するティック
  • uIスレッドがビジーの場合、ティックをスキップします

DispatcherTimer

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

Threading.Timer

  • threadpoolからワーカースレッドをチェック-スレッドを指定するオプションなし
  • ダニは常に時間通りに発射されます
  • スキップされない-以前のティックを処理している間、新しいティックから保護する必要があります

Timers.Timer

  • スレッドタイマーのラッパー
  • cLRスレッドプールから取得したワーカースレッドをチェックします
  • synchronizationObjectを指定することにより、特定のスレッドを強制的にティックできます。
  • ダニは常に時間通りに発射されます
  • スキップされない
  • 静かに例外を食べる
1
Bill Tarbell