精易论坛

标题: 关于 程序_延时 一个奇特的问题 [打印本页]

作者: 绯樱    时间: 2018-5-5 23:06
标题: 关于 程序_延时 一个奇特的问题
先看图,代码和结果



并没有想象中的分别延时。
如果间隔点击两次,会发现返回是按第二次结果返回。
看懂的同学,应该明白了这不是什么bug,造成这个原因是在同一个线程同一个时段内发生了两次延时
理论上在同一个线程内同一时段不会出现两个延时,
那么造成这个问题原因是什么,本着好奇和学习,看了源码。

发现作者是使用系统定时器,然后等待消息抵达,在这过程中,使用处理事件将权限转让,达到了不影响窗口的延时。
虽然看来没什么问题,但是这样又让“万恶”的用户有了可乘之机,如果在实际中,如果用上术方式调用了延时,这时候用户也不想等待,一直点击,就会发生这样的错误,严重可能导致程序奔溃(多线程中不会出现这个问题)。
(当然,内核对象都是正常关闭的,可以放心使用)
(帖子不知道发没发对地方,如果不对请移到正确地方)

`F5C]~P6JAP(R$ZS_ZYZ4IG.png (67.91 KB, 下载次数: 0)

`F5C]~P6JAP(R$ZS_ZYZ4IG.png

E[LH7)S$VESKER5G978X[LK.png (23.62 KB, 下载次数: 0)

E[LH7)S$VESKER5G978X[LK.png

作者: Siempre    时间: 2018-5-5 23:23
嗯 是的。。。。。

作者: 御风软件    时间: 2018-5-5 23:59
正常的逻辑是,按下按钮,如果执行的代码要很长的时间,先把按钮禁止掉,等处理完成,然后再恢复。
作者: afd    时间: 2018-5-6 00:56
习惯按钮点击后禁止,要不然调皮的用户喜欢双击   
作者: 项目部002    时间: 2018-5-8 15:12
按钮按下之后执行必要操作,按下的时候就禁止按钮操作,就可以避免一些不必要的问题,延时,延迟,程序_延时都可以尝试一下
作者: cudie    时间: 2018-5-9 10:14





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4