Foxtable(狐表)用户栏目专家坐堂 → [求助]这种情况能用异步函数吗


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

主题:[求助]这种情况能用异步函数吗

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]这种情况能用异步函数吗  发帖心情 Post By:2024/6/11 16:03:00 [只看该作者]

蓝老师好!
遍历表A的行数据,去更新表B中的列值,因为数据量较大,代码运行需10多个小时,我想问一下老师,这种情况适合利用异步函数吗?另外,我改写了一段AI给的异步函数代码,不知道对不对?
1、
For Each dr As DataRow In DataTables("表A").DataRows
    DataTables("表B").SQLReplaceFor("列1", dr("列1"), Filter0)
    DataTables("表B").SQLReplaceFor("列2", dr("列2"), Filter0)
    DataTables("表B").SQLReplaceFor("列3", dr("列3"), Filter0)
    DataTables("表B").SQLReplaceFor("列4", dr("列4"), Filter0)
    DataTables("表B").SQLReplaceFor("列5", dr("列5"), Filter0)
    ......            
Next
----------
2、
' 定义异步函数
Async Function UpdateTrendDataAsync() As Task
    For Each dr As DataRow In DataTables("表A").DataRows
        Dim updateTask As Task = Task.Run(Sub()
                                    DataTables("表B").SQLReplaceFor("列1", dr("列1"), Filter0)
                                    DataTables("表B").SQLReplaceFor("列2", dr("列2"), Filter0)
                                    DataTables("表B").SQLReplaceFor("列3", dr("列3"), Filter0)
                                    DataTables("表B").SQLReplaceFor("列4", dr("列4"), Filter0)
                                    DataTables("表B").SQLReplaceFor("列5", dr("列5"), Filter0)
                                        End Sub)

        Await updateTask
    Next
End Function

' 调用异步函数
Dim updateTask As Task = UpdateTrendDataAsync()

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110879 积分:564351 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/11 16:07:00 [只看该作者]

如果是foxtable的异步函数,不能用:http://www.foxtable.com/mobilehelp/topics/277.htm

Async 、Task这种还没有用过,不清楚。印象中这种玩意是.net 4.5才开始支持的,foxtable应该用不了

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2024/6/11 16:21:00 [只看该作者]

那这种情况用什么方式能够提高运行速度~

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


加好友 发短信
等级:二尾狐 帖子:553 积分:4545 威望:0 精华:0 注册:2012/12/2 16:53:00
  发帖心情 Post By:2024/6/11 16:30:00 [只看该作者]

...天,代码运行10个小时,这是多大的数据量,几百万行吗?

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110879 积分:564351 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/11 16:43:00 [只看该作者]

如果表A是内部表,这个没有办法了。如果是外部表,建议使用SQLcommand加载表格数据处理

或者直接使用sql,或者存储过程处理

 回到顶部