以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [总结分享]异步里里DataTable能用Find和不能用SqlFind,1小心被坑,2不要滥用异步!并附上实战项目里,BS前后端分离下的接口请求平均耗时统计  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=160857)

--  作者:chen37280600
--  发布时间:2021/2/24 9:59:00
--  [总结分享]异步里里DataTable能用Find和不能用SqlFind,1小心被坑,2不要滥用异步!并附上实战项目里,BS前后端分离下的接口请求平均耗时统计

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


 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

免费产品:

经验分享:



















[此贴子已经被作者于2024/6/5 18:06:49编辑过]

--  作者:洮沙
--  发布时间:2021/2/24 10:29:00
--  回复:(chen37280600)[总结分享]异步里里DataTable能...
学习一下。
--  作者:ajie5211
--  发布时间:2021/2/24 13:53:00
--  
这个高级啊,要学习一下。
--  作者:aix
--  发布时间:2021/2/24 14:16:00
--  
 学习
--  作者:天一生水
--  发布时间:2021/2/24 17:11:00
--  
学习
--  作者:wei0769
--  发布时间:2021/2/24 17:29:00
--  
多谢分享
--  作者:kgdce
--  发布时间:2021/2/24 23:45:00
--  
学习
--  作者:venking999
--  发布时间:2021/2/25 8:44:00
--  
学习
--  作者:浙江仔
--  发布时间:2021/2/25 12:49:00
--  
牛逼的大神
--  作者:浙江仔
--  发布时间:2021/2/25 12:51:00
--  
这个服务器管理怎么做?