Foxtable(狐表)用户栏目专家坐堂 → 窗口的计时器偏慢,如何解决?


  共有3414人关注过本帖树形打印复制链接

主题:窗口的计时器偏慢,如何解决?

帅哥哟,离线,有人找我吗?
wangjh8888
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
窗口的计时器偏慢,如何解决?  发帖心情 Post By:2019/8/2 22:34:00 [只看该作者]

老师 晚上好
利用窗口的计时器来计算时间长度,发现偏慢(跟windows的右下角时间相比),如何解决?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/2 22:48:00 [只看该作者]

这个没有办法解决的,这种计时器是属于主线程的,会受到其它事件的干扰。

如果需要准确的计时需要使用.net的System.Timers.Timer,用法参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=79833&replyID=551946&skin=1

 回到顶部
帅哥哟,离线,有人找我吗?
wangjh8888
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
  发帖心情 Post By:2019/8/3 16:35:00 [只看该作者]

老师好,有改善,但是还是慢,差不多4分钟慢1秒,如何再提高计时精度?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/3 16:51:00 [只看该作者]

这个没有办法的,就算是电脑的时钟都会有误差。或者每3分钟就根据电脑的时间调整一下

或者试试使用System.Threading.Timer


 回到顶部
帅哥哟,离线,有人找我吗?
wangjh8888
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
我要学习ystem.Timers.Timer  发帖心情 Post By:2021/8/26 12:31:00 [只看该作者]

老师 好

看到连接来的以下代码,想学习下,

问问 ,

1.绑定timertick事件 不太理解,这个timertick 是窗口的定时器吗

2.该定时周期范围有什么限制,我想要100毫秒的,实验了一下,不知道为什么好像没能实现

3.我小白,能不能详细讲解一下



以下是代码:

绑定timertick事件

 

全局代码

 

Public Sub myTimer_Elapsed(sender As object, e As System.Timers.ElapsedEventArgs)
output.show(Date.now)
End Sub

 

调用

 

Dim myTimer As new System.Timers.Timer(2000)'定时周期2秒
addhandler myTimer.Elapsed, addressof myTimer_Elapsed

myTimer.AutoReset = True
myTimer.Enabled = True
vars("mytimer") = myTimer
'vars("mytimer").Enabled = false


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/26 13:37:00 [只看该作者]

1、这个事件和窗口没有一毛钱的关系,指的是全局代码定义的事件myTimer_Elapsed,使用下面代码绑定
addhandler myTimer.Elapsed, addressof myTimer_Elapsed
2、Dim myTimer As new System.Timers.Timer(100)'100毫秒
3、网上搜索学学.net,或者vs开发吧

 回到顶部