我要发布
仪器网/ 仪器社区/ 计时器/ c#计时器timer在do while里为什么不执行?

c#计时器timer在do while里为什么不执行?

宇文化龙0915    2014-12-21    计时器    浏览 265 次

窗体里一堆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);

精彩问答
岁月无恙哦哦 发布日期:2014-12-22
不要用do while,这样子根本不会执行到Timer里面的;
if (DateTime.Now > aftertime)
{
timer1.Stop();
timer1.Enabled = false;
break;
}
上面的代码写在Timer的Trick事件中看看;
全部评论
言语521 发布日期:2014-12-22
你的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作为成员变量。
最新主题
相关版块
我要评论
X您尚未登录
账号登录
X您尚未登录
手机动态密码登录
X您尚未登录
扫码登录
官方微信

仪器网微信服务号

扫码获取最新信息


仪器网官方订阅号

扫码获取最新信息

在线客服

咨询客服

在线客服
工作日:  9:00-18:00
联系客服 企业专属客服
电话客服:  400-822-6768
工作日:  9:00-18:00
订阅商机

仪采招微信公众号

采购信息一键获取海量商机轻松掌控