窗体里一堆label设为隐藏了,timer1的触发事件是每隔0.5秒让这堆label循环逐个显示。label1.Visible=true; 现在想让计时器运行5秒后停止,但不知哪里出错,任何label都没显示过,计时器没被触发? DateTime nowtime = DateTime.Now; ... 窗体里一堆label设为隐藏了,timer1的触发事件是每隔0.5秒让这堆label循环逐个显示。label1.Visible=true;
现在想让计时器运行5秒后停止,但不知哪里出错,任何label都没显示过,计时器没被触发?
DateTime nowtime = DateTime.Now;
DateTime aftertime = nowtime.AddSeconds(5); //aftertime是nowtime的5秒后
timer1.Start();//启动计时器
timer1.Enabled = true;//计时器事件开启触发。
do
{
if (DateTime.Now > aftertime)
{
timer1.Stop();
timer1.Enabled = false;
break;
}
}
while (true);
你的Timer触发里的代码怎么写的?这里看到的仅仅是启用Timer,5秒后关闭Timer。
不过针对你这个代码说一句。
我情愿使用Sleep(5000)也不愿意使用你的dowhile啊……
CPU会一直在这个循环中消耗时间。虽然理论上不至于让机器死掉,但是怎么看也是一个不科学的代码。
你完全可以这么写
Timer.Enable = true;
Sleep(5000);
Timer.Enable = false;
或者这么写,在Timer的触发函数里加上
if(DateTimer.Now > aftertime)
Timer.Enable = false;
只不过需要将aftertime作为成员变量。