Foxtable(狐表)用户栏目专家坐堂 → 异步等待执行


  共有3133人关注过本帖树形打印复制链接

主题:异步等待执行

美女呀,离线,留言给我吧!
漂亮美眉vszh
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:869 积分:7854 威望:0 精华:0 注册:2013/5/30 11:27:00
异步等待执行  发帖心情 Post By:2019/2/13 21:55:00 [显示全部帖子]

老师:比如我要执行一个异步函数,传入一个参数执行,想执行完成以后再传入参数执行,这个异步如何等待?第一个完成之后再执行下一个?

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:869 积分:7854 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2019/2/18 15:41:00 [显示全部帖子]

1.

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

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

Functions .BeginSyncExecute("AddTotal"

3.实际前台调用执行

Functions.AsyncExecute("AddSubtotal")

---老师这样对吗?



 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:869 积分:7854 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2019/2/20 16:14:00 [显示全部帖子]

老师,经过两天的测试,在主线程Functions.AsyncExecute("AddSubtotal")开多个异步来调用Functions .BeginSyncExecute("AddTotal") ,但要等很久,与普通的函数执行时间相同,问题点应该出在哪里?

 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:869 积分:7854 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2019/2/20 21:49:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1多线程例子.foxdb


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:869 积分:7854 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By: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


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:869 积分:7854 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By: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

 

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


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:869 积分:7854 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2019/2/21 10:01:00 [显示全部帖子]

表一:编号01,02,03,10,20,30.....

表二:特性编号P-1,P-2,P-3....

表三:相关,经验规格,样本容量,样本时机,测量设备,SPC

这三张表合成一张表

如果我在函入中传入 01|P-1,那么生成结果:

01|P-1 相关

01|P-1 经验规格

01|P-1 样本容量

01|P-1 样本时机

01|P-1 测量设备

01|P-1 SPC

  如果传入01|P-2,那么生成结果:

01|P-相关
01|P-2 经验规格
01|P-2 样本容量
01|P-2 样本时机
01|P-2 测量设备
01|P-2 SPC

 


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:869 积分:7854 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2019/2/21 10:37:00 [显示全部帖子]

未指定的错误
.NET Framework 版本:2.0.50727.8937
Foxtable 版本:2018.9.9.1
错误所在事件:
详细错误信息:

未指定的错误

 

如果我用TEXT_2 就不会报错


 回到顶部
美女呀,离线,留言给我吧!
漂亮美眉vszh
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:869 积分:7854 威望:0 精华:0 注册:2013/5/30 11:27:00
  发帖心情 Post By:2019/2/21 11:33:00 [显示全部帖子]

代码我测过,传入数据量少时(3-5个循环),没有问题,但我有循环语句,可能开的线程比较多时,才会报错;其次,我用了Text_2,BeginSyncExecute再调用,也不会有问题.


 回到顶部