以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]这种情况能用异步函数吗 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192293) |
-- 作者:天一生水 -- 发布时间: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() |
-- 作者:有点蓝 -- 发布时间:2024/6/11 16:07:00 -- 如果是foxtable的异步函数,不能用:http://www.foxtable.com/mobilehelp/topics/277.htm Async 、Task这种还没有用过,不清楚。印象中这种玩意是.net 4.5才开始支持的,foxtable应该用不了 |
-- 作者:天一生水 -- 发布时间:2024/6/11 16:21:00 -- 那这种情况用什么方式能够提高运行速度~ |
-- 作者:xubing051018 -- 发布时间:2024/6/11 16:30:00 -- ...天,代码运行10个小时,这是多大的数据量,几百万行吗? |
-- 作者:有点蓝 -- 发布时间:2024/6/11 16:43:00 -- 如果表A是内部表,这个没有办法了。如果是外部表,建议使用SQLcommand加载表格数据处理 或者直接使用sql,或者存储过程处理
|