.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. C#
  5. C#のタイマーの精度と一定間隔で処理をする方法

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

  • C#
  • プログラミング言語
公開日時:   更新日時:
C#のタイマーの精度と一定間隔で処理をする方法
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

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

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

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

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

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

    1. System.Timers.Timer

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

    2. System.Threading.Timer

      スレッド処理を行う場合に使用します。

    3. System.Windows.Forms.Timer

      Windowsフォーム で使用するGUI向けの専用のクラスです。

    4. System.Windows.Threading.DispatcherTimer

      WPFで使用する場合の専用のクラスです。

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

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

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

    C#のタイマーの精度

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

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

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

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

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

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

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

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

    実行結果

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

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

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

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

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    新着案件New Job