VB倒数计时 (一个表单需要三个倒数计时)
问题在http://zhidao.baidu.com/question/1988181051277898227 有人解答
但是他给我的程式码是给一个倒数计时用的
我一个表单需要有3个倒数计时的,如上图
求3个倒数计时的程式码 展开
关于(问题在http://zhidao.baidu.com/question/1988181051277898227 有人解答)
这个解答是一种对Timer控件的羞辱,以及凸显学艺不精而已。如果倒计时时间超过5秒的话,其本身的While...Wend循环设计不足取,如果使用他的函数倒计时10分钟的话,10分钟内无法跳脱循环动作,更别想继续启动第二个倒计时、第三个倒计时...
我不说原理,直接告诉你设计重点。
使用多个Timer控件处理多个倒计时才是正确的,以倒计时600秒、480秒、360秒三种做解说,要准确的计时并不是将600、480、360每次在timer控件里减1或是减0.01的方式,这不代表时间接近了1秒或是1毫秒。而是要把这事件看待成“进入核对时间次数的频繁率”,比如:
取得倒计时的未来时间 现在时间+600秒=未来时间
timer事件interval设置为100ms(系统因为整个资源忙碌运作、误差值本来就超过7-15ms)
每次timer事件检查核对未来时间的变量与当前的电脑时间是否到期,而不是每次从600-i去核对是否为0
如果这种方法会误差超过200毫秒,那么我告诉你原因,这误差是电脑主板晶振频率系统的质量问题。而服务器的主板晶振频率系统的质量也可能每天跟标准时间误差几秒的。
注意一个原理,前599秒是可以因为系统忙碌而每次误差500毫秒的,但是最后决定性的1秒到期时间点与系统时间的误差绝对不会超过interval=100ms的一倍200毫秒。
有兴趣的不妨试试使用一个Do...Loop或While...Wend循环检查600秒是否到期,就算加上Doevents以及Sleep,它不但占用系统资源30%左右拖累系统速度,还让本身程序的其他控件、其他事件的代码都没机会运行。再试试一下使用10个Timer控件同时计时,你将会看到10个倒计时控件占用系统资源不到10%
曾经看到XX宣传功能可以设置每1毫秒自动点击鼠标一次,我笑了,姑且不论是否超级电脑,光是与远端服务器完成交换鼠标点击信息的时间都不止50毫秒
针对本内容有什么疑问继续提出吧,有空就会继续回复问题。