.NET開発者のためのブログメディア
C#のタイマーの精度と一定間隔で処理をする方法

アプリケーションにて一定間隔で処理を行いたい場合に使用するのがタイマーです。
C#で実装をしたい場合、Windowsフォームアプリケーション やWebアプリケーションなど、アプリケーションの種類によって実装方法が異なります。
ここでは、コンソールアプリケーションの例をご紹介します。
- PG
- アプリケーションの中で、一定間隔で処理する機能をつけたいです。C#でどうやったら良いかを教えてください。
- PM
- C#ではタイマーという機能を使用します。コンソールアプリケーションでタイマーを使用して、実装してみましょう。
目次
C#のタイマーでできること
C#でタイマーを使用すると、一定間隔で処理を実行することができます。
2019年8月現在、C#で使用できるタイマーには4種類のクラスがあります。
- System.Timers.Timer
System.Timers.TimerクラスはWindowsアプリケーションやコンソールアプリケーションだけでなく、Webアプリケーションとしてサーバー側の処理でも使用できるように設計されています。形態を問わず使用できるので使い勝手も良いです。
今回紹介するコンソールアプリケーションではこのクラスを使用します。 - System.Threading.Timer
スレッド処理を行う場合に使用します。
- System.Windows.Forms.Timer
Windowsフォーム で使用するGUI向けの専用のクラスです。
- System.Windows.Threading.DispatcherTimer
WPFで使用する場合の専用のクラスです。
一般的に使用する場合は、System.Timers.Timerを理解しておけば問題ありません。
タイマーは、処理を実行する間隔を指定してインスタンスを作成し、タイマーの開始と終了の処理を実行します。
タイマーが動いている間にどんな処理を行うかを指定することで、一定間隔での処理を実現しています。
処理を実装する時に意識する部分はこれだけなので、特に難しい処理を実装する必要はありません。
C#のタイマーの精度
それでは実際にSystem.Timers.Timerクラスを使用して実装します。
サーバーベースのSystem.Timers.Timer についてはWindowsタイマーよりも精度が向上すると公式ページに書かれています。
以下にプログラムの例を示します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
using System;
using System.Timers;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Timer timer = new Timer(1000);
int count = 0;
timer.Elapsed += (sender, e) =>
{
if (count < 5)
{
Console.WriteLine("Hello World");
count++;
}
else
{
timer.Stop();
Console.WriteLine("終了");
}
};
timer.Start();
Console.ReadKey();
}
}
}
|
まず、以下のようにインスタンスを作成します。この時、ミリ秒で処理を実行する間隔を指定します。
1
|
Timer timer = new Timer(1000);
|
一定間隔で実行する処理を記載します。timer.Elapsedの部分です。
本記事はif文を使用して、処理を5回繰り返すようにしています。5回繰り返した後は、timer.Stop();の処理で、終了します。
以下が開始する処理です。
1
|
timer.Start();
|
開始する際には、アプリケーションを起動したままにする必要があるので、以下のようにキー入力を読み込む処理を入れています。
この処理を入れないとアプリがすぐに終了してしまうので、処理が行われません。
1
|
Console.ReadKey();
|
実行すると以下のような結果になります。
5回繰り返し処理が行われることが確認できました。
また、最初にインスタンスを作成した時に、1000ミリ秒と指定したので、出力は1秒ごとに行われます。
- PG
- C#のタイマークラスを使えば、一定間隔の処理もできるんですね!
- PM
- タイマーの間隔を指定して、開始と終了の処理、繰り返し実行する処理を実装するだけなので簡単ですよ。
C#のタイマー処理はSystem.Timers.Timerで実装する
ここでは、System.Timers.Timerクラスの使い方を紹介しました。
タイマーの間隔を指定して、開始と終了の処理、繰り返し実行する処理を実装するだけなので、簡単に使用することができます。
System.Timers.Timerクラスを使用して、タイマー処理を実装してみてはいかがでしょうか。
Search キーワード検索
Popular 人気の記事
reccomended おすすめ記事
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅)