C#

【C#】タイマーで一定間隔おきに処理を実行する基本的な使い方

こんにちは、リバティエンジニア[?]のFUNAです。

現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

 

今回はC#における「System.Timers.Timer」について解説していきます。

プログラムを組んでいると「一定間隔で同じ処理を繰り返す」ような処理が必要になるときがありますよね。

 

マルチスレッドで定期的に処理を行ったりと様々な用途が予想されます。

 

そんな時には「System.Timers.Timer」を使用します。このTimerを使えば指定した時間の間隔で、同じ処理を一定回数行うことができるようになります。

 

今回は、そんなC#のTimerについて「Timerの使い方」という基本的な内容から、「Timerの種類による違い」などの応用的な使い方に関して、初心者の方にもわかりやすく解説していこうと思います。

 



 

 

C# Timerとは

そもそも「Timer」とは何なのでしょうか?

先ほども少しお話しましたが、「同じ処理を一定間隔で繰り返し行う」場合に便利に使うことができるものなんです。

 

似ているものに「時間計測」がありますが、これはただ時間を測るだけなので「Stopwatchクラス」というクラスを使います。似ていますが、用途が全く違うので間違えないように注意しましょう。

 

Timerの使い方

基本的には同じ処理を繰り返すものになるのですが、if文を使い条件を指定することで任意の回数で処理を止めることもできます。

 

if文については下の記事を参考にしてみて下さい。

>> [C#] 条件によって処理を変えてみる(if, else)

 

 

C# Timerの使い方

では早速Timerクラスの使い方を見ていきましょう。

 

実は「Timer」といってもいろいろ種類がありまして、それぞれの特徴が異なっているため使い分ける必要があります。

 

System.Timers.Timerクラスは一般的によく使われていて、使い方もシンプルなので私も重宝しています。

 

Timerの使い方

「System.Timers.Timer」を宣言し、コンストラクタの引数にタイマーの間隔をミリ秒で指定します。

System.Timers.Timerのコンストラクタにより指定した間隔で発生させたい処理は「Elapsed」というTimerのイベントに記述していきます。

「Elapsed」に処理を追加できたら「Start」メソッドでタイマーの処理をスタートさせます。

 

流れで言うと下の感じです。

using System;
using System.IO;
using System.Timers;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            int num = 0;

            // タイマーの間隔(ミリ秒)
            Timer timer = new Timer(1000);

            // タイマーの処理
            timer.Elapsed += (sender, e) =>
            {
                if (num < 5)
                {
                    Console.WriteLine("5回繰り返します。");
                    Console.WriteLine($"{num}回目です。");
                    num++;
                }
                else
                {
                    timer.Stop();
                    Console.WriteLine("処理を終了しました");
                }
            };

            // タイマーを開始する
            timer.Start();

            Console.ReadKey();
        }
    }
}

/*
実行結果:
5回繰り返します。
1回目です。
5回繰り返します。
2回目です。
5回繰り返します。
3回目です。
5回繰り返します。
4回目です。
5回繰り返します。
5回目です。
*/

このようにこのプログラムでは、1000ミリ秒(1秒)間隔で文字を表示して、10回繰り返して処理を終了しています。

 

Timerの種類による違い

ここまでは「System.Timers.Timer」について説明しましたが、冒頭でも説明したように、Timerには4種類あります。

その中でも、精度が高く一般的によく使われるのが先ほど紹介した「System.Timers.Timerクラス」です。

 

  • System.Timers.Timer ... 今回ご紹介した、一般的に使われる精度の高いタイマー
  • System.Threading.Timer ... 別スレッドで動作することが特徴のタイマー
  • System.Windows.Forms.Timer ... 「Windows Form」向けに作られたタイマー
  • System.Windows.Threading.DispatcherTimer ... WPF向けのタイマー

 

基本的には、「System.Timers.Timerクラス」を使えば問題ないでしょう。

慣れてきたり、System.Timers.Timerクラスでは実装できないような問題が起きた場合にはほかのクラスの利用を検討してみて下さい。

 

まとめ

今回はTimerを使って一定間隔で処理を繰り返する方法を解説しました。

Timerにはいくつか種類がありますが、一般的には「System.Timers.Timerクラス」を使うので覚えておいてくださいね。

 

当ブログでは他にもC#の記事がありますので、よかったら見ていってください!

>> [C#] Windows.Formsのイベントが発生する順番は?

>> [C#] ラムダ式はこれさえ見ればOK!簡単徹底解説

>> フリーランスに挑戦!準備は必要ない。~エンジニア・プログラマ編~

 

C#カテゴリの関連記事

【C#】 ファイルパスの徹底攻略。取得や結合、ファイルの存在チェック

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回はC#における「ファイルパス」の取り扱いについてご紹介 ...

【C#】dictionaryとは?初期化の方法や基本の使い方をカンタン解説

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回はC#の「dictionary」について初期化の仕方な ...

【C#入門】LINQ(リンク)とは?わかりやすく解説!

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回は、まだLINQ(リンク)を使いこなせていない方や、初 ...

【C#】型変換(キャスト)とは?初心者でも簡単な使い方を解説

今回はC#のキャストとは何なのかについて解説します。C#ではコンパイルされる時に静的に型が指定されるため、「型」が変数の「型」に暗黙的に変換することができない限り、再びその変数を宣言したりその変数とは違う型の値を代入したりすることができません。そんな時に便利なキャストがあります。

【C#】enum (列挙型)がわかる!かんたん徹底解説

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回はC#で列挙型(enum)についてお話します。 目次 ...

【C#】プロパティとは?利用するメリットはあるのか。

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回はC#で便利な機能の一つ「プロパティ」についてお話して ...

【C#】 usingステートメントとは?サンプルコードで解説

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回は自動でインスタンスを解放してくれる便利な機能「usi ...

【C#】コンストラクタとデストラクタ

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今回は、C#におけるコンストラクタとデストラクタの役割や使 ...

【C#】例外処理でアプリケーションを安全に(try-catch-finally)

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 ここではプログラミングをする際に必須となってくる例外処理の ...

【C# 入門】超簡単!ファイル入出力

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 C#では簡単にファイルの読み込みや書き込みをする事ができる ...

 

最近の投稿

「ワーケーション」とは?環境省が推している理由やメリットを解説

「ワーケーション」とは?2020年7月に、菅官房長官が「ワーケーション」の普及について表明してSNSやニュースで「ワーケーション」が話題になりました。環境省が推進している理由や導入メリット・デメリットを解説します。

レバテックキャリアは未経験でも転職できるのか?リアルな口コミで検証します

IT特化型転職エージェントの「レバテックキャリア 」は未経験でも転職することができるのか?について実際に利用した方のクチコミを元に調査しました。

レバテックキャリアの悪い評判は本当なのか?利用者から聞く実態と噂の真偽

【2020年10月更新】IT系の転職エージェントで有名な「レバテックキャリア」ですが、なぜ悪い評判や悪い口コミが多いのか?その理由について説明します。また、是非登録すべき他の転職エージェントもご紹介していますので、参考にしてみてください。

その会社は大丈夫?知っておきたいブラック企業の特徴

就職先がブラック企業ではないか不安… 転職を考えているけど、ブラックな会社だったらどうしよう… こういった悩みや不安を抱えている方も多くいると思います。 就職や転職をした際に「この会社、ブラックだった ...

【2020年最新保存版】副業と複業の違いやそれぞれの意味について徹底解説!

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 今、話題になっている「テレワーク」という働き方を利用して「 ...

Copyright© FUNA BLOG , 2020 All Rights Reserved.