关于.net中使用System.Windows.Forms.Timer的限制.

我的程序中使用到计时器Timer,使用的方法是想在跟据不同的情况下,间隔的时间不同,刚开始,Timer.Interval  = 45000(45秒),当程序运行一段时间或达到某一条件时,将间隔设和较长一点.为45000的倍数, 如第一次达到条件是,我设为了45000+45000(90s),可是这时发现我的程序在Timer Event中的操作没有作用了,也就是不执行了.怎么回事?,怎么会出现这种问题?是计时器里的操作出问题了吗?我开始一行一行检查Timer Event里操作的代码,没有问题呀?那是怎么回事呢?百思不得其解.是Interval  的设置有问题吗? 经过反复的重新设置,发现不是,最后没有办法,只好通过写日志来查找原因,当然只是对Timer Event里的操作写日志.Timer每一次运行后就设为90S,结果检查日志发现,Timer Event只运行了一次.此后再也没有运行.将Interval 设为45S不变,Timer正常运行.看来是TImer有问题.然后开始查MSDN,经过努力,终于让我找到了,原来Timer 的Interval有一定限制.MSDN里叙述如下:

Windows 窗体计时器组件的 Interval 属性的限制
当编制 Timer 组件时,需要考虑 Interval 属性的几点限制:

  • 如果您的应用程序或另一个应用程序对系统的需求很大(如:长循环、大量计算或驱动器、网络或端口访问),那么您的应用程序可能无法以 Interval 属性指定的频率来获取计时器事件。
  • 间隔可以在 1 和 64,767 之间(包括 1 和 64,767),这意味着即使最长的间隔(大约 64.8 秒)也不会超过一分钟很多。
  • 不能保证间隔所精确经过的时间。若要确保精确,计时器应根据需要检查系统时钟,而不是尝试在内部跟踪所积累的时间。
  • 系统每秒生成 18 个时钟刻度,因此即使 Interval 属性以毫秒为单位,间隔的实际精度也不超过十八分之一秒。

我的问题就出在第二条,时间间隔大于了64,767 ,现在知道原因了,好了,那我不计时器的间隔不变,把里面的处理增加一个记录位,如果要90S执行,那我让记录位为时再执行下所有操作,比2小时,直接退出Timer Event,大于2时,恢复为了,重新开始记录.程序经过修改一切OK..

后记:
     看来以后在编写程序时,使用某一个组件或控件时,一定要把他的一些限制和注释看清楚,不然程序在出错时,自已还不知道为什么呢,以后在这方面一定要多注意.^_^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值