以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于异步函数问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187099)

--  作者:benben325
--  发布时间:2023/6/21 9:56:00
--  关于异步函数问题
主体代码结构如下:
代码片段1
    functions.exe("函数1")
代码片段2


函数1代码如下:
   functions.AsyncExecute("函数2")
   functions.AsyncExecute("函数3")
   functions.AsyncExecute("函数4")


在执行主体代码的时候,代码片段1 到 代码片段2  并没有等待 函数1执行完成。。。
有什么办法,让代码1 到代码2 中进行等待,等待 函数1里面所有的函数都执行完成?


--  作者:有点蓝
--  发布时间:2023/6/21 10:11:00
--  
要借助同步函数:http://www.foxtable.com/mobilehelp/topics/3270.htm

增加一个全局变量
Public TCount As Integer

增加一个同步函数,比如名称【同步1】。代码为:
TCount = TCount - 1

"函数2、3、4"里面最后增加一句代码
……
Functions.BeginSyncExecute("同步1")

函数1代码改为:
TCount = 3
   functions.AsyncExecute("函数2")
   functions.AsyncExecute("函数3")
   functions.AsyncExecute("函数4")
do while TCount > 0
Application.DoEvents
loop


--  作者:benben325
--  发布时间:2023/6/21 10:17:00
--  
请问  Public TCount as Integer 这种全局变量  和 Vars("TCount") 这种全局变量有区别么?
--  作者:有点蓝
--  发布时间:2023/6/21 10:20:00
--  
异步函数里只能使用 Public 变量。其它基本没有什么区别。
--  作者:benben325
--  发布时间:2023/6/21 13:22:00
--  
老师,还有个问题,我用狐表做的后台,若多个用户发送了 执行这个任务的指令,是不是TCount  会冲突?
--  作者:有点蓝
--  发布时间:2023/6/21 13:43:00
--  
会冲突的。考虑建个表,有列用户名,计数等,每个用户执行的时候,查询有没有自己名称的行,没就新增,然后更改判断这一行的计数列值