.net column

.NET開発者のためのブログメディア
タイマー

C#のタイマーの精度と一定間隔で処理をする方法

2019年11月08日

アプリケーションにて一定間隔で処理を行いたい場合に使用するのがタイマーです。
C#で実装をしたい場合、Windowsフォームアプリケーション やWebアプリケーションなど、アプリケーションの種類によって実装方法が異なります。
ここでは、コンソールアプリケーションの例をご紹介します。

PG
アプリケーションの中で、一定間隔で処理する機能をつけたいです。C#でどうやったら良いかを教えてください。
PM
C#ではタイマーという機能を使用します。コンソールアプリケーションでタイマーを使用して、実装してみましょう。

C#のタイマーでできること

C#でタイマーを使用すると、一定間隔で処理を実行することができます。

2019年8月現在、C#で使用できるタイマーには4種類のクラスがあります。

  1. System.Timers.Timer
  2. System.Timers.TimerクラスはWindowsアプリケーションやコンソールアプリケーションだけでなく、Webアプリケーションとしてサーバー側の処理でも使用できるように設計されています。形態を問わず使用できるので使い勝手も良いです。
    今回紹介するコンソールアプリケーションではこのクラスを使用します。

  3. System.Threading.Timer
  4. スレッド処理を行う場合に使用します。

  5. System.Windows.Forms.Timer
  6. Windowsフォーム で使用するGUI向けの専用のクラスです。

  7. System.Windows.Threading.DispatcherTimer
  8. WPFで使用する場合の専用のクラスです。

一般的に使用する場合は、System.Timers.Timerを理解しておけば問題ありません。

タイマーは、処理を実行する間隔を指定してインスタンスを作成し、タイマーの開始と終了の処理を実行します。

タイマーが動いている間にどんな処理を行うかを指定することで、一定間隔での処理を実現しています。
処理を実装する時に意識する部分はこれだけなので、特に難しい処理を実装する必要はありません。

C#のタイマーの精度

それでは実際にSystem.Timers.Timerクラスを使用して実装します。
サーバーベースのSystem.Timers.Timer についてはWindowsタイマーよりも精度が向上すると公式ページに書かれています。

以下にプログラムの例を示します。

まず、以下のようにインスタンスを作成します。この時、ミリ秒で処理を実行する間隔を指定します。

一定間隔で実行する処理を記載します。timer.Elapsedの部分です。

本記事はif文を使用して、処理を5回繰り返すようにしています。5回繰り返した後は、timer.Stop();の処理で、終了します。

以下が開始する処理です。

開始する際には、アプリケーションを起動したままにする必要があるので、以下のようにキー入力を読み込む処理を入れています。
この処理を入れないとアプリがすぐに終了してしまうので、処理が行われません。

実行すると以下のような結果になります。

実行結果

5回繰り返し処理が行われることが確認できました。
また、最初にインスタンスを作成した時に、1000ミリ秒と指定したので、出力は1秒ごとに行われます。

PG
C#のタイマークラスを使えば、一定間隔の処理もできるんですね!
PM
タイマーの間隔を指定して、開始と終了の処理、繰り返し実行する処理を実装するだけなので簡単ですよ。

C#のタイマー処理はSystem.Timers.Timerで実装する

ここでは、System.Timers.Timerクラスの使い方を紹介しました。
タイマーの間隔を指定して、開始と終了の処理、繰り返し実行する処理を実装するだけなので、簡単に使用することができます。
System.Timers.Timerクラスを使用して、タイマー処理を実装してみてはいかがでしょうか。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)