Foxtable(狐表)用户栏目专家坐堂 → [讨论]启用与关闭计时器


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

主题:[讨论]启用与关闭计时器

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


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
[讨论]启用与关闭计时器  发帖心情 Post By:2019/8/13 22:07:00 [只看该作者]

老师好!
有个秒表的例子,是用按钮按下开启计时器,再次按下关闭计时器,代码如下:
Vars("Time") = Date.Now
e.Form.TimerEnabled = not e.Form.TimerEnabled

我在一段按钮的代码中这样开启秒表:
Vars("Time") = Date.Now
e.Form.TimerEnabled = true
’msgbox(1)

然后,在代码尾部这样关闭:
Vars("Time") = Date.Now
e.Form.TimerEnabled = false

但是秒表不运行,如果在中间加入弹出窗口msgbox(1)后,秒表就可以运行,是什么原因?

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


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

做个例子发上来看看

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


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/8/13 22:36:00 [只看该作者]

老师请测试。窗口里面第二个按钮,如果弹出个窗口msgbox(1),秒表就运行,否则不运行。
我想用标签显示秒表。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:秒表.table


[此贴子已经被作者于2019/8/13 22:42:43编辑过]

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


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

Sleep会停掉这个主线程,肯定不行啊。只能是使用第一个按钮的方式

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


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/8/13 22:47:00 [只看该作者]

实际上是其他的代码,没用sleep

 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/8/13 22:50:00 [只看该作者]

加了一段运算代码,也不行。
Dim Sum As Integer
Dim i As Integer
For i = 1 To 10000
    Sum = Sum + i
Next 

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


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

窗口计时器一样会被主线程阻塞的。特别是给控件赋值的时候。如果是循环还好办,如果是某种费时操作一样没有用

计时事件
Dim t1 As Date = Vars("Time")
Dim t2 As Date = Date.Now
Dim t As TimeSpan = t2 - t1
Dim str As String
str = t.Minutes & ":" & t.Seconds & ":" & Format(t.Milliseconds,"000")
e.Form.Controls("Button1").text = str


e.Form.Controls("Label1").text = str
Application.Doevents

按钮事件
Vars("Time") = Date.Now
e.Form.TimerEnabled = True

Dim Sum As Decimal
Dim i As Decimal
For i = 1 To 1000000
    Sum = Sum + i
    Application.Doevents
Next

e.Form.TimerEnabled = False

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


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

真正实现需要多线程支持,参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=73365

 回到顶部