Foxtable(狐表)用户栏目专家坐堂 → 异步函数执行问题


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

主题:异步函数执行问题

帅哥哟,离线,有人找我吗?
304376480
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:339 积分:3760 威望:0 精华:0 注册:2017/9/7 15:20:00
异步函数执行问题  发帖心情 Post By:2020/5/27 17:35:00 [只看该作者]

老师您好!
有三段函数代码:函数A、函数B、函数C,在同一个按扭中,同时使用 AsyncExecute 方法异步执行,
函数C中的代码比较简单,如下:

Dim DJBH As String = Args(0) 
'追载
 Dim id As Integer = DataTables("应收应付明细").Compute("Max(_Identify)") DataTables("应收应付明细").AppendLoad("[_Identify] > " & id) 
''重置 
 DataTables("应收应付明细").DataCols("客户ID").RaiseDataColChanged("单据编号 = '" & DJBH & "'")

问题:在 函数A 或 函数B 还没有执行完毕时,函数C无论同步执行还是异步执行,都会报错,
那么,要怎么知道 函数A 和 函数B  都执行完毕了,再开始执行 函数C 呢? (这个跟开发文档示例中的循环执行又是不同的)

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/27 17:42:00 [只看该作者]

调用同步函数,比如有全局变量a=0,函数A执行完毕调用同步函数,设置a=a+1,函数B执行完毕调用同步函数,设置a=a+1。函数A或者B执行完毕判断如果a=2,表示函数A和B都执行完毕了,调用函数C即可。

另外请仔细看看:http://www.foxtable.com/mobilehelp/topics/277.htm,不是什么代码都能在异步函数里使用的,想上面这种代码肯定就不行

 回到顶部
帅哥哟,离线,有人找我吗?
304376480
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:339 积分:3760 威望:0 精华:0 注册:2017/9/7 15:20:00
  发帖心情 Post By:2020/5/27 18:36:00 [只看该作者]

下面这样的代码放在函数中异步调用,会有问题吗?

Dim Tab As DataTable = Args(0)'明细表
Dim DJBH As String = Args(1)'单据编号
Dim Colname As String = Args(2)'列名称
Dim DataTab As DataTable = DataTables("出入库明细")
Dim JLh As DataRow = DataTables("经营记录").SQLFind("单据编号 = '" & DJBH & "'")
Dim mxs As New List(Of DataRow)
    mxs = Tab.SQLSelect("单据编号 = '" & DJBH & "'")
    For Each mx As DataRow In mxs
        Dim CRnh As DataRow = DataTab.SQLAddNew()
        CRnh("单据编号") = DJBH
        CRnh("日期") = JLh("日期")
        CRnh("仓库") = JLh("仓库")
        CRnh("产品ID") = mx("商品ID")
        CRnh(Colname) = mx("数量")
        CRnh("入库日期") = Date.Now 
        CRnh.Save()
    Next

 回到顶部
帅哥哟,离线,有人找我吗?
chen37280600
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1265 积分:7844 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2020/5/27 19:17:00 [只看该作者]

你的想法,比较混乱,建议不要滥用异步···

 回到顶部
帅哥哟,离线,有人找我吗?
304376480
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:339 积分:3760 威望:0 精华:0 注册:2017/9/7 15:20:00
  发帖心情 Post By:2020/5/27 20:43:00 [只看该作者]

有一个问题一直没有解决,处理十几行数据就有明显的卡顿感,没办法哦,使用异步处理会非常流畅,但在线程还没处理完的时候,点开其他操作就会弹出错误提示,不知道怎么处理,,,,?

 回到顶部
帅哥哟,离线,有人找我吗?
chen37280600
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1265 积分:7844 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2020/5/27 21:09:00 [只看该作者]

一般都是上千行或者上万才上异步。几十行都卡,你要说下具体处理什么,看下如何从思路上解决。有些时候,要多冗余字段,用空间换时间

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/28 9:27:00 [只看该作者]

3楼这种用法,还不如考虑直接使用sql进行更新

 回到顶部