以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  异步等待执行  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=130994)

--  作者:漂亮美眉vszh
--  发布时间:2019/2/13 21:55:00
--  异步等待执行
老师:比如我要执行一个异步函数,传入一个参数执行,想执行完成以后再传入参数执行,这个异步如何等待?第一个完成之后再执行下一个?
--  作者:有点甜
--  发布时间:2019/2/13 23:02:00
--  

 

那你把代码写到函数里面,在里面继续调用自己。

 

 


--  作者:漂亮美眉vszh
--  发布时间:2019/2/18 15:41:00
--  

1.

定义一个名为AddTotal的函数,其代码为:***省略
2.
异步函数

然后定义一个名为AddSubtotal的函数,这个函数将在主线程中被异步调用,其代码为:

Functions .BeginSyncExecute("AddTotal"

3.实际前台调用执行

Functions.AsyncExecute("AddSubtotal")

---老师这样对吗?



--  作者:有点蓝
--  发布时间:2019/2/18 16:29:00
--  
差不多了。这种问题先测试,然后有什么具体问题再提出来。不要问行不行,对不对,这种问题基本没有什么意义
--  作者:漂亮美眉vszh
--  发布时间:2019/2/20 16:14:00
--  
老师,经过两天的测试,在主线程Functions.AsyncExecute("AddSubtotal")开多个异步来调用Functions .BeginSyncExecute("AddTotal") ,但要等很久,与普通的函数执行时间相同,问题点应该出在哪里?
--  作者:有点蓝
--  发布时间:2019/2/20 16:19:00
--  
请上传具体实例测试
--  作者:漂亮美眉vszh
--  发布时间:2019/2/20 21:49:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1多线程例子.foxdb


--  作者:漂亮美眉vszh
--  发布时间:2019/2/20 21:50:00
--  

命令窗口执行的代码,注意函数Text_1那个主键的值:

Dim Products As List(Of String)
Dim Products2 As List(Of String)
Products = DataTables("表A").SQLGetValues("过程编号")
For Each Product As String In Products
    If Product <> "" Then
        Products2 = DataTables("表B").SQLGetValues("特性编号")
        For Each Product2 As String In Products2
            If Product2 <> "" Then
                \' st = st & ";" & Product & "|" & Product2
                Functions.AsyncExecute("Text_2",Product & "|" & Product2)
            End If
        Next
    End If
Next


--  作者:有点蓝
--  发布时间:2019/2/20 21:57:00
--  
没看懂,请使用文字详细描述一下您的逻辑。哪些功能是需要异步处理的?
--  作者:漂亮美眉vszh
--  发布时间:2019/2/21 9:10:00
--  

函数Text_1,执行时Args(0)= 编号|特性编号,然后异步每次上传不同的Args(0)信息。可能开很多条异步:

第一步:定义函数Text_1

第二步:定义同步函数"Text_2", Functions.BeginSyncExecute("Text_1", "编号|特性编号")
第三步:命令窗口执行:

for循环条件

  Functions.AsyncExecute("Text_2","编号|特性编号")
next

 

以上是我的处理思路,使用时前台操作卡,而且所用时长与普通函数时长一样,不知道问题点出在哪步上。命令窗口执行我上面的代码,执行时注意主键噢,