在timer事件中用call调用模块的代码,而模块的代码为do...loop语句,且循环结束条件需同一个timer参与,因此成为死循环.同样的冲突也发生在keydown中,按回车进入模块循环语句,但由于电脑判断为回车事件仍在,导致在循环结束前输入了n个回车......有没有解决办法?最好是调用模块语句后,就能与原语句切断联系.请以最简单(代码最少,所涉及的变量及控件最少,声明最少)的方法回答.
热心网友
vb不具备多线程能力,所以只能另寻方法--Doevents法dim conts as boolean '全局变量:是否继续循环sub loops() '死循环子程序 do doevents if conts=false then exit sub loopend subprivate sub timer1_timer()if (你想让他执行循环) and conts=false then conts=true:loops '这样如果没开始循环,就开始执行循环,如果已经开始就跳过if (你想结束循环) then conts=falseend sub这样,你可以在Timer1的过程中加入判断,当结束时,因为改变了conts的值,程序执行至判断行自然就退出了。Doevents语句可以释放Cpu给程序的其他部分
热心网友
只能说明你的程序逻辑设计不合理,应该考虑换其他的思路。
热心网友
1.引入一个全局逻辑变量,在循环体中作一判断,如果该变量改变了,则退出循环,变量值由其他的输入模块控制2。检测回车键:读入键盘值,如果是回车键值则执行某段程序然后直接退出循环即可。