|
.NET TIPS
Stopwatchクラスで時間計測をリセットして再開するには?[4以降、C#、VB]
デジタルアドバンテージ 一色 政彦
2010/07/29 |
|
|
「TIPS:処理時間を正確に計測するには?」では、Stopwatchクラス(System.Diagnostics名前空間)を用いて処理時間を計測する方法を紹介した。具体的には、処理開始時にStopwatchオブジェクトのStartメソッドを呼び出し、処理終了時にStopメソッドを呼び出すことで処理時間が計測できる。その開始から終了までの経過時間は、Elapsedプロパティ(TimeSpan構造体の値)などで取得できる。
処理時間の計測を停止させて計測を再開するには、再度Startメソッドを呼び出せばよいが、経過時間を「0」にリセットしたい場合には、その呼び出し前にResetメソッドを呼び出す必要がある。つまり、ResetメソッドとStartメソッドを順に呼び出す必要がある。.NET Framework 4では、この2つのメソッド呼び出しと同等の機能を持つRestartメソッドが追加されている。
次のコードは、そのRestartメソッドを利用したコンソール・アプリケーションのサンプル・プログラムだ。
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
Stopwatch sw = new Stopwatch();
sw.Start();
System.Threading.Thread.Sleep(1000);
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
// 出力例:00:00:00.9999469
sw.Restart();
System.Threading.Thread.Sleep(1000);
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
// 出力例:00:00:00.9999469
// 実行を停止
Console.ReadLine();
}
}
|
Module Module1
Sub Main()
Dim sw As New Stopwatch()
sw.Start()
System.Threading.Thread.Sleep(1000)
sw.Stop()
Console.WriteLine(sw.Elapsed.ToString())
' 出力例:00:00:00.9999469
sw.Restart()
System.Threading.Thread.Sleep(1000)
sw.Stop()
Console.WriteLine(sw.Elapsed.ToString())
' 出力例:00:00:00.9999469
' 実行を停止
Console.ReadLine()
End Sub
End Module
|
|
StopwatchオブジェクトのRestartメソッドを呼び出すサンプル・コード(上:C#、下:VB) |
上記のサンプル・プログラムでは、Restartメソッドにより経過時間をリセットしているが、逆に経過時間を累積したい場合にはStartメソッドを呼び出せばよい。
利用可能バージョン:.NET Framework 4
カテゴリ:クラス・ライブラリ 処理対象:日付と時刻
使用ライブラリ:Stopwatchクラス(System.Diagnostics名前空間)
使用ライブラリ:TimeSpan構造体(System名前空間) |
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間