Foxtable(狐表)用户栏目专家坐堂 → 在子线程中同步调用函数的问题


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

主题:在子线程中同步调用函数的问题

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
在子线程中同步调用函数的问题  发帖心情 Post By:2023/4/18 12:08:00 [只看该作者]

在httprequest中异步执行函数时,如果异步函数中再同步调用其他函数,很大概率会出现问题。
之前同一个页面中只有2-3个请求时没有察觉。
现根据实际项目的使用情况,简单做了个例子。这个例子就是每次刷新页面会做8次请求,每次请求都传一个id,然后异步函数再用syncExecute同步执行另一个函数得到datatable。
生成datatable的sql语句都是没有问题的。
刷新页面导致的出错概率不一定,有时刷新20次左右都正常,有时2-3次刷新就出错了:


图片点击可在新窗口打开查看此主题相关图片如下:error.jpg
图片点击可在新窗口打开查看

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




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


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2023/4/18 12:14:00 [只看该作者]

是的,看了你的提问 我才发现 我一直在找的问题 就是这个。

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/18 13:39:00 [只看该作者]

异步函数里不管有没有调用同步,都不要使用datatable的sqlxxx系列函数。请直接使用SQLcommand

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2023/4/18 14:30:00 [只看该作者]

 应该也不全是这个,我的已经全部都换成 SQLCommand生成的表了,只是机率低些 还是时不时会出现这个,现在是每个月出现 5次左右,真奇怪。如果用 sqlfind 就会高个10倍左右。

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


加好友 发短信
等级:六尾狐 帖子:1279 积分:7953 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2023/4/18 15:20:00 [只看该作者]

反正我是坚决在异步里,不用任何Sqlxxx,一直很稳


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


 回到顶部