以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 怎么设置超时处理。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100449) |
-- 作者:huhu -- 发布时间:2017/5/11 15:15:00 -- 怎么设置超时处理。 红色的代码是我传"出库单号",对方接口给我返回数据。 我想增加超过15s如果还没从对方接口获取数据。那么我就不处理这行dr了,接着处理下一行。 这个超时限制怎么写代码? Dim drs As List(of DataRow) = DataTables("销售出库单列表").SQLSelect("发货要求 is null") For Each dr As DataRow In drs Dim d2 As new ClassLibrary2.Class2() Dim Multi As String =d2.getInvoiceInfoByONo(dr("出库单号")) If Multi = "非销售出库单" Or Multi = "非BD订单系统生成的销售发货单" Then dr("发货要求") = dr("数量") dr("挪货数量") = dr("数量") dr("实扫到数量") = 0 dr("比较结果") = dr("实扫到数量") - dr("数量") dr("U8发货") = True dr.save Else Dim data As object Dim JscriptCode = "function toObject(json) {eval(""var o=""+json);return o;}" Dim ScriptControl = CreateObject("MSScriptControl.ScriptControl") With ScriptControl .Language = "Javascript" .Timeout = -1 .AddCode(JscriptCode) data = .Run("toObject", Multi) End With For Each level2 As object In data.BDinvoiceBody If level2.iall.workInfos.length = 0 Then dr("发货要求") = dr("数量") dr.save Else For Each level4 As object In level2.iall.workInfos If level4.whpiDl.workNo = "" And level4.whpiDl.workLineNo = "" Then dr("发货要求") = dr("数量") dr.save Else Dim str As String str &= level4.whpiDl.workNo & "_" str &=level4.whpiDl.workLineNo & "_" If level2.orderDetail.productNo = dr("存货编码") Then dr("发货要求") = str & dr("数量") dr.save Else dr("发货要求") = dr("数量") dr.save End If str = "" End If Next End If Next |
-- 作者:有点蓝 -- 发布时间:2017/5/11 15:36:00 -- 没有办法计时的。调用远程服务后,没有返回之前是做不了任何事情的。返回后已经有结果,再计时已经没有意义。 |
-- 作者:有点色 -- 发布时间:2017/5/11 15:59:00 -- 试试多线程处理。论坛搜索多线程的代码。
做个计时,15秒后检测后面的变量是否改变,如果没改变,就结束线程。(或者你不检测也可以,让其单独运行到服务器连接超时) |