以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]httprequest下异步编程异常 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=180286) |
-- 作者:xubing051018 -- 发布时间:2022/10/12 10:21:00 -- [求助]httprequest下异步编程异常 httprequest下有两个事情,事件A比较耗时,用了异步函数。 事件B没有用异步。 Select Case e.Path Case "a.htm" e.AsyncExecute = True \' Functions.AsyncExecute("A", e) \'
Case "b.htm" Functions.Execute("B", e) End Select 实际运行,不同时间分别访问a,b事件都是正常的,没有问题。 但是如果在访问a事件的等待返回结果的过程中,访问b事件,系统就会报错。 求教是什么原因。
|
-- 作者:xubing051018 -- 发布时间:2022/10/12 10:22:00 -- B函数是用来统计数据的,代码如下: Dim e As RequestEventArgs = args(0) Dim wb As New weui Dim b As New SQLGroupTableBuilder("tb_grp","tb_frm_Scan") b.C b.AddTable("tb_frm_Scan","FrameID","tb_frm_FtoM","FrameID") \'添加统计表 b.AddTable("tb_frm_FtoM","ModelID","tb_frm_model","ModelID") \'添加统计 b.Groups.AddDef("OrderID","订单号") \'根据产品分组 b.Groups.AddDef("ScanEvent","扫码事件") \' b.Totals.AddDef("StockQty", AggregateEnum.Count , "车架数量") b.Totals.AddDef("StockQty","在库数量") \'对数量进行统计 b.VerticalTotal = True Dim bt As DataTable = b.Build(True) \'生成统计表 With wb.AddTable("","Table3") .CreateFromDataTable(bt,True) End With e.WriteString(wb.Build) [此贴子已经被作者于2022/10/12 10:23:27编辑过]
|
-- 作者:xubing051018 -- 发布时间:2022/10/12 10:22:00 -- 报错截图 |
-- 作者:有点蓝 -- 发布时间:2022/10/12 10:33:00 -- 如果在访问【a.htm】的时候,还没有返回结果,这时直接关闭【a.htm】,然后打开【b.htm】,a函数就会出现上面第一个图片的错误,连接被关闭,因为【a.htm】被关闭了。 可以屏蔽掉这种错误,然后记录到日志中:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=173590
|
-- 作者:xubing051018 -- 发布时间:2022/10/12 10:41:00 -- 没理解。 直接关闭a.htm是什么意思? 我是两个不同的客户端分别访问a,b事件的。 客户端1访问a事件,等待返回结果,并没有去关闭a.htm.
此时 客户端2 访问b.htm, 然后就报错了。 屏蔽这个报错,客户端2能够正常访问b.htm得到返回结果? [此贴子已经被作者于2022/10/12 10:44:18编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/10/12 10:45:00 -- 不同客户端访问正常不会互相影响的,除非2个页面操作的都是数据库同一个表,导致数据库表被锁,然后数据库访问出错。 如果是httprequest事件代码逻辑有缺陷,请把整个httprequest事件完整代码,以及异步函数的完整代码发上来看看
|
-- 作者:xubing051018 -- 发布时间:2022/10/12 10:53:00 -- 项目事件BeforeShowErrorMessage在Foxtable捕获错误并即将显示错误信息前执行。 Functions.Execute("LogText",e.ex,e.Event) e.Cancel = True 用这种方式并没有能够屏蔽报错,还是弹出错误弹框。
|
-- 作者:有点蓝 -- 发布时间:2022/10/12 11:00:00 -- 不可能。除非是您自己写代码弹窗的 |