Foxtable(狐表)用户栏目专家坐堂 → [总结分享]异步里里DataTable能用Find和不能用SqlFind,1小心被坑,2不要滥用异步!并附上实战项目里,BS前后端分离下的接口请求平均耗时统计


  共有15023人关注过本帖平板打印复制链接

主题:[总结分享]异步里里DataTable能用Find和不能用SqlFind,1小心被坑,2不要滥用异步!并附上实战项目里,BS前后端分离下的接口请求平均耗时统计

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


加好友 发短信
等级:六尾狐 帖子:1264 积分:7827 威望:0 精华:4 注册:2017/12/31 14:53:00
[总结分享]异步里里DataTable能用Find和不能用SqlFind,1小心被坑,2不要滥用异步!并附上实战项目里,BS前后端分离下的接口请求平均耗时统计  发帖心情 Post By:2021/2/24 9:59:00 [只看该作者]

(快速浏览杰哥分享过的所有经验汇总,点击跳转

 1.异步的DataTable不能用SQLxxx
所有Sqlxxx都不能用,例如

//内部函数
Dim fr As DataRow = DataTables("ItemInfo").SqlFind("a=1")

经过测试:
在同步里,以上执行100次不出错
在异步里,大约有90次是fr为Nothing。肯定是因为SqlFind里面有共有变量,导致返回出问题

有人问:为什么有时候我异步里DataTables("xx").SqlFInd并没有报错呢?


以下内容只有回复后才可以浏览


还是那句话,不要滥用异步!线程创建要250ms,然后这个SqlCmd创建表也要400ms。然而根据5个Web项目的实测统计,大部分的响应请求都在100-200ms之间


此主题相关图片如下:微信截图_20210224095804.png
按此在新窗口浏览图片

此主题相关图片如下:微信截图_20210224111229.png
按此在新窗口浏览图片



2.异步的DataTable可以用Find之类

//内部函数
Dim fr As DataRow = DataTables("ItemInfo").Find("a=1")

经过测试:
在同步和异步里里,以上执行1000000次都不出错

本质上跟狐表文档里演示的读取全局PublicInteger一个效果,所以是没问题的

3.异步的DataTable还可以用LoadFilter之类

//内部函数
Dim cmd As New SqlCommand()
cmd
.ConnectionName = "Orders"
cmd.CommandText = "Sele ct * From Orders Where 1=2"
Dim dt as DataTable = cmd.ExecuteReader() 

dt.LoadFilter="1=1"
dt.LoadTop="100 percent"
dt.load(False)
Output.Show(dt.DataRows.Count)
'结果是不是0,说明能加载

===============================================================
顺便总结以前分享过的帖子,方便大家学习

联系QQ:2385350359

免费产品:

经验分享:



















[此贴子已经被作者于2023/3/13 15:57:22编辑过]

 回到顶部
总数 45 1 2 3 4 5 下一页