vb.net中的定时器问题

[复制链接]
查看11 | 回复6 | 2021-1-27 06:48:25 | 显示全部楼层 |阅读模式
开发环境:vs2008,
开发语言:vb.net
运行平台:LJD-ewin7000,WINCE5.0,.NET3.5版本框架
问题:用定时器做一个固定时长的定时,如10秒,程序运行时,每隔10秒就在listbox1控件上打印出一条当前时间。
如,定时十秒,则在listbox1控件上,每隔10秒显示如下:
当前时间:2011-11-1811:10:10
当前时间:2011-11-1811:10:21
当前时间:2011-11-1811:10:31
当前时间:2011-11-1811:10:42
当前时间:2011-11-1811:10:52
当前时间:2011-11-1811:11:03
当前时间:2011-11-1811:11:13
程序的定时时间会出现较大的误差,不能较精确的根据定时的时长来执行。!
我们要的是:
当前时间:2011-11-1811:10:10
当前时间:2011-11-1811:10:20
当前时间:2011-11-1811:10:30
当前时间:2011-11-1811:10:40
当前时间:2011-11-1811:10:50
当前时间:2011-11-1811:11:00
当前时间:2011-11-1811:11:10
或者,如果是定时5分钟的话,是:
当前时间:2011-11-1811:10:10
当前时间:2011-11-1811:15:10
当前时间:2011-11-1811:20:10
当前时间:2011-11-1811:25:10
当前时间:2011-11-1811:3010
当前时间:2011-11-1811:35:10

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:48:25 | 显示全部楼层
定时器间隔设置为0.5秒,在事件中判断是否符合显示条件,符合则进行显示
回复

使用道具 举报

千问 | 2021-1-27 06:48:25 | 显示全部楼层
这样的需求有什么意义?
反正一秒判断一次估计是来不及
回复

使用道具 举报

千问 | 2021-1-27 06:48:25 | 显示全部楼层
很难这么准确的,如果你想准确,就引用外部控件吧.
回复

使用道具 举报

千问 | 2021-1-27 06:48:25 | 显示全部楼层
2楼说的对,你应该将定时器,间隔设到500MS以内,的任何值均可
回复

使用道具 举报

千问 | 2021-1-27 06:48:25 | 显示全部楼层
建议在计时开始前定义一变量,计时器启动后,尽可能地将值在最前端赋给变量,再通过变量给文本框传递值,切勿直接给文本框给值,例如:
'1:
PrivatestrAsString
PrivateSubTimer1_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
str=Now
TextBox1.Text=str
EndSub
'2:
PrivateSubTimer1_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
TextBox1.Text=Now
EndSub
在应用程序环境比较复杂的情况下,显然第一种写法要比第二种更“靠谱”些,愚见而已,未亲测。。呵呵
回复

使用道具 举报

千问 | 2021-1-27 06:48:25 | 显示全部楼层
建议在计时开始前定义一变量,计时器启动后,尽可能地将值在最前端赋给变量,再通过变量给文本框传递值,切勿直接给
文本框给值,例如:
'1:
PrivatestrAsString
PrivateSubTimer1_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
str=Now
TextBox1.Text=str
EndSub
'2:
PrivateSubTimer1_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
TextBox1.Text=Now
EndSub
在应用程序环境比较复杂的情况下,显然第一种写法要比第二种更“靠谱”些,愚见而已,未亲测。。呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行