以下是引用kangss在2023-7-15 17:28:38的发言:
VFP的timer没见谁反应有BUG
“Thisform.timer_key.Interval=30”在表单初始化时执行一次就行了,无需反复执行;
“Thisform.timer_key.Interval=0”相当于“Thisform.timer_key.Enabled=.F.”。执行 timer 事件过程开始执行“Enabled=.F.”末尾执行“Enabled=.T.”即可;
“Thisform.f_nextlist”个人感觉自定义方法这样用更好“Thisform.f_nextlist()”:可以区分是表单的自定义变量还是自定义方法,还可以传入参数;
timer_key 的事件中执行了 5 个自定义方法,这 5 个里面都有“Do While Enddo”,怀疑里面的代码导致某个 do 死循环,导致 timer_key 就没法执行最后的“Enabled=.T.”,导致你看到的 timer_key 像是“停止”了
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
感谢你的意见:
VFP我已经感受过很多次bug,不可理喻的bug
如:
https://bbs.bccn.net/thread-510561-1-1.html
https://bbs.bccn.net/thread-506195-1-1.html
1、我其它的软件也很多使用timer,唯独这个软件会出现timer莫名停止的问题。(我高度怀疑与托盘图标有关系,已经换过自带的控件,也换过myfll控件依然存在这个问题)
2、“timer 事件过程开始执行“Enabled=.F.”末尾执行“Enabled=.T.”即可”
这个我基本都是这么做了
3、“Thisform.f_nextlist”
这个应该没有影响timer的可能性,赞不讨论
4、timer_key 下的5个“Do While Enddo”
里面的5个循环都是
current_time=Seconds()
Do While Abs(Seconds()-current_time)<0.3
拖延时间=1
Enddo
这个循环应该不存在死循环的可能;这是其一;其二:假设进入了死循环,我是没办法点击右下角的按钮的,我右下角的按钮加了timer的“Enabled=.T.”,这个是我怀疑timer停止运行了所以加的验证语句,果然在快捷键失效的情况下,只要我一按这个按钮,快捷键就马上正常使用了,充分证明了timer是停止的,如果是有死循环正在执行的话我是没有办法点击这个按钮的。
5、我设计了两个timer的,其实正常情况下一个timer_key是够用的了,之所以加一个timer_activate,是想两个timer轮流激活对方不让彼此停止,事实效果好像是只是延长了timer工作的时长,就是说本来用一个timer本来几个小时就停止了,用两个好像有时能达到一两天。(好像是比较业余的实验)
综合:我现在高度怀疑是因为第一点的问题,就是托盘,就是放托盘就会这样
[此贴子已经被作者于2023-7-16 00:32编辑过]