2

当我开始某个过程时,我会使用 DateTime.Now 并将其记为 StartTime。

在稍后的过程中,我从 DateTime.Now 中减去 StartTime 来计算这两者之间经过的时间 - 在开始时间和当前时间之间。

现在,问题是这种方法并不总是准确的——在处理过程中,时间可能会被窗口使用时间服务器更改,甚至可能由用户手动更改。

是否有其他一些方法来测量所描述的时间,这些方法总是能正常工作——即使同时改变了窗口时间?

4

3 回答 3

2

StopWatch类 - http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx

于 2012-04-21T12:12:41.297 回答
1

你可以利用这个:Get time of Code Execution Using StopWatch

Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
//instead of this there is line of code that you are going to execute
Thread.Sleep(10000);
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine(elapsedTime);
Console.ReadLine();
于 2012-04-21T12:13:21.003 回答
1

使用秒表。

var a = Stopwatch.StartNew(); // Initializes and starts running
var b = new Stopwatch(); // Initializes and doesn't start running

var c = a.Elapsed; // TimeSpan

a.Stop();
a.Start();
a.Reset();

秒表本身就像一块手表,所以它不依赖计算机的时钟。只需从头开始,然后检查 Elapsed 以查看已经过去了多少时间。

于 2012-04-21T12:13:57.737 回答