以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 在子线程中同步调用函数的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186269) |
-- 作者:reachtone -- 发布时间:2023/4/18 12:08:00 -- 在子线程中同步调用函数的问题 在httprequest中异步执行函数时,如果异步函数中再同步调用其他函数,很大概率会出现问题。 之前同一个页面中只有2-3个请求时没有察觉。现根据实际项目的使用情况,简单做了个例子。这个例子就是每次刷新页面会做8次请求,每次请求都传一个id,然后异步函数再用syncExecute同步执行另一个函数得到datatable。 生成datatable的sql语句都是没有问题的。 刷新页面导致的出错概率不一定,有时刷新20次左右都正常,有时2-3次刷新就出错了: 这是例子: |
-- 作者:ap9709130 -- 发布时间:2023/4/18 12:14:00 -- 是的,看了你的提问 我才发现 我一直在找的问题 就是这个。 |
-- 作者:reachtone -- 发布时间:2023/4/18 12:31:00 -- 奇怪的是,如果在SyncExecute执行之前加个msg弹窗,怎么刷新也不会错了。本来想用弹窗检查问题的,加了之后反而查不出问题了。 将此弹窗代码去掉,再多刷新几次还是会出现错误。 MessageBox.Show(id) Dim dt As DataTable = Functions.SyncExecute("tj", id) 反复调试,发现就是sqlfind的问题。服务器端sqlfind很常用的,希望能解决! [此贴子已经被作者于2023/4/18 13:21:28编辑过]
|
-- 作者:有点蓝 -- 发布时间:2023/4/18 13:39:00 -- 异步函数里不管有没有调用同步,都不要使用datatable的sqlxxx系列函数。请直接使用SQLcommand |
-- 作者:ap9709130 -- 发布时间:2023/4/18 14:30:00 -- 应该也不全是这个,我的已经全部都换成 SQLCommand生成的表了,只是机率低些 还是时不时会出现这个,现在是每个月出现 5次左右,真奇怪。如果用 sqlfind 就会高个10倍左右。 |
-- 作者:chen37280600 -- 发布时间:2023/4/18 15:20:00 -- 反正我是坚决在异步里,不用任何Sqlxxx,一直很稳 |