以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [讨论]启用与关闭计时器 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=139486) |
-- 作者:天一生水 -- 发布时间: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)后,秒表就可以运行,是什么原因? |
-- 作者:有点蓝 -- 发布时间:2019/8/13 22:17:00 -- 做个例子发上来看看 |
-- 作者:天一生水 -- 发布时间:2019/8/13 22:36:00 -- 老师请测试。窗口里面第二个按钮,如果弹出个窗口msgbox(1),秒表就运行,否则不运行。 我想用标签显示秒表。 [此贴子已经被作者于2019/8/13 22:42:43编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/8/13 22:45:00 -- Sleep会停掉这个主线程,肯定不行啊。只能是使用第一个按钮的方式 |
-- 作者:天一生水 -- 发布时间:2019/8/13 22:47:00 -- 实际上是其他的代码,没用sleep |
-- 作者:天一生水 -- 发布时间:2019/8/13 22:50:00 -- 加了一段运算代码,也不行。 Dim Sum As Integer Dim i As Integer For i = 1 To 10000 Sum = Sum + i Next
|
-- 作者:有点蓝 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2019/8/13 23:07:00 -- 真正实现需要多线程支持,参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=73365 |