注册 登录
编程论坛 VFP论坛

关于命令执行顺序的问题

大树临风 发布于 2024-03-12 09:46, 440 次点击
发现有时候,在前一条命令未执行完成的情况下,下一条命令被执行,如何避免这种情况

[此贴子已经被作者于2024-3-12 09:48编辑过]

10 回复
#2
sdta2024-03-12 10:16
inkry(N)  && 设置等待N秒
#3
sych2024-03-12 11:28
在vfp里是不可能的,检验的方法是:
你可以建10个timer,每个都循环向数据库插入数据,其实这10个timer是顺序执行的,一个timer没执行完另一个timer是不会执行的

[此贴子已经被作者于2024-3-12 11:30编辑过]

#4
sych2024-03-12 11:35
比如
**先建立数据库
**crea tabl tmp (c (20),i)
在每个timer里输入
for i=1 to 100
inse into tmp values(this.name,i)
next
最后执行完后你检查发现这100条记录是连续的
#5
大树临风2024-03-12 12:36
回复 2楼 sdta
inkey秒数不好设置,多了卡顿明显,少了又担心不够,有更好的方法吗
#6
大树临风2024-03-12 12:38
回复 3楼 sych
一般情况不会,但是有的命令比较耗时,比如调用外部程序、上传下载文件等,系统好像就提前执行后面的命令了
#7
sych2024-03-12 12:50
这就要具体情况具体分析了,没有万全之策

#8
hu9jj2024-03-29 07:12
我们都知道,VFP是单线程操作的,因此不可能同时“执行”两条命令。楼主出现这种现象很可能是VFP执行与操作系统交互的命令,例如VFP要将数据写入文件中,在将写文件的命令及数据缓冲区句柄交给操作系统后,VFP认为这条命令已经执行完了,继续执行下一条命令,而操作系统却仍在写数据的过程中。这种情况的出现应该是极为罕见的,所以处理起来也必须有针对性。
#9
laowan0012024-03-29 08:03
8楼分析的有道理
对于VFP而言,交给操作系统了就算是完成任务了,因为后续VFP也管不了了,所以就执行下一条了
#10
星光悠蓝2024-03-29 11:02
不同电脑运行速度不一样,inkey()控制不太理想
#11
shizi02024-04-02 18:02
AutoYield不行吗?
1