+ -
当前位置:首页 → 问答吧 → vb.net timer 问题..

vb.net timer 问题..

时间:2013-09-25

来源:互联网

要行一个每小时都会行的function..
做左个timer 分钟同秒都是00 就行...

但问题是个function 太简单, 1秒内行左几次, 有乜方法可以令佢只行一次...

谢谢..

作者: will8088   发布时间: 2013-09-25

Simple, keep a flag...

上个钟记住 lastrun = 13:00:00
现在 14:00:00,
- First run: 既然唔同, 真系行一次, 记住 lastrun = 14:00:00
- 2nd run onward: 同喎, skip

作者: 111x111=12321   发布时间: 2013-09-25

我现时个TIMER_TICK咁写..

if minute(now)= 0 and second(now) =0 then
do (Sub)
endif

个问题系佢系0秒已经行左个Sub 6-7次.....

我之前用估好似好ON居方法就系行多一个TIMER 1秒后先行个SUB, 但咁做好似真系太ON居, 我估应该有更好方法...

作者: will8088   发布时间: 2013-09-25

引用:原帖由 will8088 於 2013-8-29 03:18 PM 发表
我现时个TIMER_TICK咁写..

if minute(now)= 0 and second(now) =0 then
do (Sub)
endif

个问题系佢系0秒已经行左个Sub 6-7次.....

我之前用估好似好ON居方法就系行多一个TIMER 1秒后先行个SUB, 但咁做好似 ...
你加个 flag.

Procedure TIMER_TICK.init
timer_tick.lastrun = 0

Procedure TIMER_TICK.tick

if timer_tick.lastrun <> date(now)*1000 + hour(now)
timer_tick.lastrun = date(now)*1000 + hour(now)
do (Sub)
endif


Remark: Codes are pseudo, "now" resolution to second, not more precise.

作者: 111x111=12321   发布时间: 2013-09-25

引用:原帖由 111x111=12321 於 2013-8-29 06:50 PM 发表

你加个 flag.

Procedure TIMER_TICK.init
timer_tick.lastrun = 0

Procedure TIMER_TICK.tick

if timer_tick.lastrun date(now)*1000 + hour(now)
timer_tick.lastrun = date(now)*1000 + hour(now ...
timer 有成 set 几 interval 架喎... 洗唔洗搞咁多野...

不过讲开 timer, 其实 .net 有好多种, 我记得都有 3 种, (win form) timer 组件最简单, 而且UI可夸綫程, 但准确度唔高, 另外有 system.timers, 仲有 system.threading.timer, 但不具备 ui 夸綫程, 用法比较复杂

作者: p_net   发布时间: 2013-09-25

热门下载

更多