为什么时间没有增加

时间:2015-05-07 00:15:35

标签: c# winforms datetime

我试图显示进程何时开始以及何时完成的时间戳,但我的时间永远不会增加(即使现实中的时间确实如此)

DateTime now = DateTime.Now;
txt1.AppendText(now + Environment.NewLine);
//Lengthy process that usually takes 2 - 3 minutes
txt1.AppendText(now);

4 个答案:

答案 0 :(得分:5)

您实际上使用的变量与第一次显示时的值相同。你需要再次得到这样的时间......

DateTime now = DateTime.Now;
txt1.AppendText(now + Environment.NewLine);
//Lengthy process that usually takes 2 - 3 minutes
DateTime timeHasPassed = DateTime.Now;
txt1.AppendText(timeHasPassed);

答案 1 :(得分:3)

DateTime是ValueType。将其分配给变量时,您将复制该值,而不是引用。

这意味着当您使用DateTime.Now时,您必须通过Get Property调用它以获取最新的时间值。

txt1.AppendText(DateTime.Now + Environment.NewLine);
//Lengthy process that usually takes 2 - 3 minutes
txt1.AppendText(DateTime.Now);

答案 2 :(得分:1)

这是因为您在变量中捕获并存储了DateTime.Now,因此它显示了存储的值。再次使用DateTime.Now而不是使用now变量。

答案 3 :(得分:1)

不要使用DateTime来衡量代码的处理时间。

您永远不应该使用DateTime.Now进行任何增量或数学运算,因为可能由于DSTTimeZone问题而不明确。

使用StopWatch来衡量经过的时间。该类提供.NET中的高精度计时。它能够以大约100纳秒的灵敏度测量时间。

您可以使用StartStop方法来控制StopWatch对象。