VB6中调用DoEvents不返回的原因
作者:admin 日期:2011-03-19
这两天在加班折腾一个程序,在我的机器上完全正常的一个控制软件,到了平板电脑上就玩不转了,动不动就挂起了.
由于实在是不知道问题在哪里,便安装了开发环境后单步,居然发现是在调用DoEvents时"栽"进去了,不返回了!
这实在实在是怪.由于DoEvents的不返回,造成当前的DO....LOOP循环不能继续下去,机器的后续控制指令无法执行,很多功能都完全不正常了.
但是同样的代码在性能高的机器上就没有问题.
仔细一想,会不会是DoEvents调用时的堆积消息太多,导致还没处理完,又是一堆,结果一直处理不完,所以DoEvents一直不返回??
马上把绘制机械状态的函数入口处加一句Exit Sub,再运行,就一切正常了.
看来上面的推测是正确的,记录一下吧...
这个函数里要根据机械当前的X与Y坐标绘出机械状态,同时还要把要加工的路径显示在界面上,对于性能好点的机器来说不是问题.
但那个平板电脑里是什么N270之类的低功率双核CPU,性能极为低下,简直要命,连个绘图都完不成,汗.
看样子要考虑使用API绘图了(代码里是用的PSet与Line完成的)......
由于实在是不知道问题在哪里,便安装了开发环境后单步,居然发现是在调用DoEvents时"栽"进去了,不返回了!

这实在实在是怪.由于DoEvents的不返回,造成当前的DO....LOOP循环不能继续下去,机器的后续控制指令无法执行,很多功能都完全不正常了.
但是同样的代码在性能高的机器上就没有问题.
仔细一想,会不会是DoEvents调用时的堆积消息太多,导致还没处理完,又是一堆,结果一直处理不完,所以DoEvents一直不返回??
马上把绘制机械状态的函数入口处加一句Exit Sub,再运行,就一切正常了.
看来上面的推测是正确的,记录一下吧...
这个函数里要根据机械当前的X与Y坐标绘出机械状态,同时还要把要加工的路径显示在界面上,对于性能好点的机器来说不是问题.
但那个平板电脑里是什么N270之类的低功率双核CPU,性能极为低下,简直要命,连个绘图都完不成,汗.
看样子要考虑使用API绘图了(代码里是用的PSet与Line完成的)......

评论: 0 | 引用: 0 | 查看次数: 796