作者leo60037 (Pon)
看板C_Sharp
标题Re: [问题]请问一下关於TIMER的问题
时间Thu Aug 28 21:32:49 2008
※ 引述《GANTZZ (我爱吃虾子)》之铭言:
: 各位板友好
: 小弟现在在写一个程式
: 程式里有两个timer
: 第1个Timer的intreval为1秒
: 第2个Timer的interval为0.5秒
: 在timer1中有一个while回圈的结束条件为当timer2执行结束时或变数AA>10时即跳离此
: while回圈,即为必须同时满足"变数AA<10"和"timer2还在执行"这两个条件才能进入
: 此while回圈
: 程式码大概如下
: timer1
: {
: timer2.enable = ture;
: while ( AA < 10 && timer2.enable==ture )
: {
: .....
: }
: }
: timer2
: {
: timer2.enable = false;
: }
: 但用此写法" while ( AA < 10 && timer2.enable==ture )"这个判断式似乎无法成立
: 请问各位板友
: 该怎麽解决此问题
: 谢谢大家
并不是这个条件式无法成立
而是本身的执行绪被咬在 timer1 的 while 中
先了解 timer 这元件不是真的执行绪
它运作的方式是以事件的方式去触发执行
也就是当在跑 timer1_tick 的时候
事件就不会触发和执行 timer2_tick
必须要排队等 timer1_tick 结束才能轮到
不过可以在 while 中加入 Application.DoEvents();
当跑到这行的时候就会停在这
暂时先去处理其他伫列中的事件
这样 timer2_tick 就能顺利被执行
等其他事件处理完又会回到 timer1_tick 暂停的地方继续执行
不过用这种方式会让程式变的很假
因为这根本不是真正两个 timer 在同时运作
如果你要有自己执行绪的 timer
可以用 System.Threading.Timer 试看看
希望对你有帮助 XDD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.138.145.130