Foxtable(狐表)用户栏目专家坐堂 → [求助]httprequest下异步编程异常


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

主题:[求助]httprequest下异步编程异常

帅哥,在线噢!
xubing051018
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:553 积分:4545 威望:0 精华:0 注册:2012/12/2 16:53:00
[求助]httprequest下异步编程异常  发帖心情 Post By:2022/10/12 10:21:00 [只看该作者]

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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:553 积分:4545 威望:0 精华:0 注册:2012/12/2 16:53:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:553 积分:4545 威望:0 精华:0 注册:2012/12/2 16:53:00
  发帖心情 Post By:2022/10/12 10:22:00 [只看该作者]

报错截图

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110762 积分:563742 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:553 积分:4545 威望:0 精华:0 注册:2012/12/2 16:53:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110762 积分:563742 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/10/12 10:45:00 [只看该作者]

不同客户端访问正常不会互相影响的,除非2个页面操作的都是数据库同一个表,导致数据库表被锁,然后数据库访问出错。

如果是httprequest事件代码逻辑有缺陷,请把整个httprequest事件完整代码,以及异步函数的完整代码发上来看看

 回到顶部
帅哥,在线噢!
xubing051018
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:553 积分:4545 威望:0 精华:0 注册:2012/12/2 16:53:00
  发帖心情 Post By:2022/10/12 10:53:00 [只看该作者]

项目事件BeforeShowErrorMessage在Foxtable捕获错误并即将显示错误信息前执行。
Functions.Execute("LogText",e.ex,e.Event)
e.Cancel = True

用这种方式并没有能够屏蔽报错,还是弹出错误弹框。

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110762 积分:563742 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/10/12 11:00:00 [只看该作者]

不可能。除非是您自己写代码弹窗的

 回到顶部