Foxtable(狐表)用户栏目专家坐堂 → 怎么设置超时处理。


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

主题:怎么设置超时处理。

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
怎么设置超时处理。  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/5/11 15:36:00 [只看该作者]

没有办法计时的。调用远程服务后,没有返回之前是做不了任何事情的。返回后已经有结果,再计时已经没有意义。


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/11 15:59:00 [只看该作者]

 试试多线程处理。论坛搜索多线程的代码。

 

 做个计时,15秒后检测后面的变量是否改变,如果没改变,就结束线程。(或者你不检测也可以,让其单独运行到服务器连接超时)


 回到顶部