我正在为应用程序实现一些诊断,用户可以看到图形更新的速度,我遇到了一些看似奇怪的行为。我的图形更新功能是使用Timer调用的,它看起来像这样:
private void RefreshScreen(object sender, EventArgs e)
{
DateTime begin = DateTime.Now;
// Do some updating...
DateTime end = DateTime.Now;
graphicsUpdateRate = (end - begin).TotalMilliseconds;
}
当我稍后在另一个函数中将graphicsUpdateRate显示到一个单独的窗口时,它几乎总是为0.偶尔它实际上会是~0.5,但我从未在低于0.48的情况下看到它。有什么理由为什么如果它低于这个会将它钳制到0?使用TimeSpan.TotalMilliseconds时有什么我想念的吗?我很困惑,因为它似乎是随机的。
答案 0 :(得分:5)
您应该使用StopWatch
。
类似的东西:
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
// Do something.
stopwatch.Stop();
graphicsUpdateRate = stopwatch.ElapsedMilliseconds;
您可以在此处阅读有关使用StopWatch
的原因:
Is DateTime.Now the best way to measure a function's performance?