2009-08-30 3 views
1

.NETには3つのTimerクラスがあります(Timers.Timer、Threading.Timer、およびWindows.Forms.Timer)。いつ使うべきですか?それらを使用することのパフォーマンスへの影響は何ですか?.netのタイマー - いつ使いますか?

答えて

1

thisが役立つかどうかを確認してください。

編集:上記のほか、タイマーの間隔容量が異なると思います。
私はdotnetrocksショーの1つでそれを聞いたことを覚えています。私はそれを見つけようとします。

EDIT2:各クラスのMSDNページで人々が追加した警告もご覧ください。 (これは言い、それはWindowsアプリケーションのために最適化されている。したがって、ウィンドウアプリケーションで使用されるべきである)
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx
http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx

IMOでは、タイマーの機能が異なります。あなたのニーズに合ったものを決める必要があります。

1

私の知る限り、パフォーマンスの違いはありません。ロジックを実行するのに必要な時間タイマー経過イベントハンドラー内で実行します。重要な違いは次のとおりです。

  • Timers.TimerとThreading.Timerは、別々のThreading.ThreadPoolスレッドからイベントを発生させます。
  • Forms.Timerは、UIスレッド内からイベントを発生させます。
  • Timers.Timerは、フォーム上のコンポーネントとして配置できます。
  • Forms.Timerは、よりユーザーフレンドリーなインターフェイスを備えています。

あなたのニーズに応じて1つお選びください。タイマー経過イベントへの応答がバックグラウンドジョブの一種である場合、UIとは独立して発生する必要がある場合は、Timers.TimerまたはThreading.Timerが必要になります。タイマー経過イベントへの応答がビジュアルフィードバックのようなものなら、Forms.Timerが必要になります。

個人的には、カスタムタイマー抽象化/インターフェイスを作成し、.NETタイマーに基づいて3つの実装を作成します。これにより、理論上は、コードを変更せずにさまざまな種類のタイマーを切り替えることができます。

関連する問題