| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5205 人关注过本帖
标题:关于Timer的启动问题
只看楼主 加入收藏
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:9 
关于Timer的启动问题
在按钮中加入如下代码,但是至始至终Timer都没执行过,全局中没有其他的Timer1.enabled=false代码
程序代码:
Timer1.Enabled = True
Timer2.Enabled = True
Timer3.Enabled = True
DoEvents
Sleep 3000 '延时3000毫秒
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
搜索更多相关主题的帖子: False false 
2016-04-14 18:09
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
有没有人了解这个问题呢?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2016-04-14 20:13
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:5 
看你的代码不应该有问题啊,要不把主要代码都贴上
2016-04-14 21:12
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
试一下如果把最后三行false注释掉看它执不执行
2016-04-14 23:23
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:5 
Sleep 3000 '延时3000毫秒

这行是调用 API 函数吗?
SLEEP,是停止分配CPU时间片来达到延时的目的。
在停止分配CPU时间片的过程中,该程序的所有的响应过程都被暂停。

Timer1.Enabled = True
Timer2.Enabled = True
Timer3.Enabled = True              '开三个定时器
DoEvents                           '确保定时器开启成功
Sleep 3000 '延时3000毫秒           '程序暂停执行3秒,期间不响应任何事件,包括内部事件
Timer1.Enabled = False             '关三个定时器
Timer2.Enabled = False
Timer3.Enabled = False

这时,定时器还没办法触发定时器,就被关闭了。



[此贴子已经被作者于2016-4-15 08:19编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2016-04-15 08:17
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:0 
Timer1.Enabled = True已经执行的话,加中断应该是可以看到Timer事件触发。
@renxiaoyao36 你可以加中断看一下,如果Timer的事件触发,效果出不来。那就是风版说的。
2016-04-15 08:26
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
多半是风老大说那个原因,就那么几行代码,除此以外无法给出别的解释。
2016-04-15 16:57
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
问题已经确认,谢谢大家的帮助。我换了算法,避开了这个问题,但是经过研究,发现问题是这样的,供大家参考一下
@xiangyue0510
@风吹过b
两位看看我的理解对不对。
Sleep确实是API调用的,理论上我在前面加上Doevents的话,除了这个模块的代码全部终止以外,其他代码不会终止的。
可是测试指出:如果Timer1,在它进行第一遍执行之前,运行到Sleep,就会中止Timer的循环运行,而如果Timer已经运行过一次了,就会无视Sleep,继续运行
另外,除了Timer以外,我发现Sleep执行的时候,程序不能执行任何移动操作,右上角的按钮全部失效。
我理解的对不对?

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2016-04-16 15:30
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:0 
都说过了 Sleep 是暂停CPU时间分配来暂停。
CPU时间都不给你的程序,你的程序还怎么响应,执行。
延时,最好的办法还是使用定时器。
执行完当前步骤,定义当前状态,开定时器,结束当前函数。
定时器触发时,先关掉自己,防止重复,然后再根据当前状态,再运行后面一些步骤。

授人于鱼,不如授人于渔
早已停用QQ了
2016-04-17 10:40
renxiaoyao36
Rank: 9Rank: 9Rank: 9
来 自:七宝中学
等 级:贵宾
威 望:31
帖 子:347
专家分:1077
注 册:2014-9-18
收藏
得分:0 
回复 10楼 风吹过b
谢谢风版

编程蛋疼的不是枯燥,而是辛辛苦苦编完几百行的代码,运行,“Runtime Error “xxx””。
2016-04-17 12:51
快速回复:关于Timer的启动问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017163 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved