您不应在此使用<条码>。 Thread.Sleep
on the UI thread Band the UI, and using it on another thread causes to increase details due to read coordinatedation.
如果你有C# 5或CTP,那么你或许可以写出与你所写的非常相似的代码,因为你可以继续使用相当于<条码>的编号。
In standard C# 4 I d use a System.Windows.Forms.Timer
.
To start the countdown:
var minutes = 3; //countdown time
var start = DateTime.UtcNow; // Use UtcNow instead of Now
endTime = start.AddMinutes(minutes); //endTime is a member, not a local variable
timer1.Enabled = true;
在时间手里,你写:
TimeSpan remainingTime=endTime-DateTime.UtcNow;
if(remainingTime<TimeSpan.Zero)
{
label1.Text = "Done!";
timer1.Enabled=false;
}
else
{
label1.Text = remainingTime.ToString();
}
其他格式选择见。 Standard TimeSpan Format Strings。
该法典还有一个问题,即如果系统锁定变化,它不会正确发挥作用。
使用<代码> 现在,,而不是Datetime.UtcNow
,在从/到日光储蓄或改变时间区时,也会中断。 由于你想要确定某个时间点(而不是一个显示时间),你应当使用UTC而不是当地时间。