WiFi 掉线时未使用 CommandTimeout

Posted

技术标签:

【中文标题】WiFi 掉线时未使用 CommandTimeout【英文标题】:CommandTimeout not being used when WiFi drops 【发布时间】:2016-03-29 00:14:17 【问题描述】:

在下面的示例中,如果 wifi 连接断开,CommandTimeout = 5 似乎没有帮助。不幸的是,即使在这种情况下,sqlConnection 仍然有 StateOpen

真正的问题是超时似乎是无限的,它只是坐在那里.. 挂起。我不能让它回来。 cmd_GetItem.ExecuteNonQuery() 之后的代码永远不会被调用,它只是挂在那里。

有什么想法吗?

With cmd_GetItem
    .Connection = con
    .CommandType = Data.CommandType.StoredProcedure
    .CommandText = "spGetItem"
    .CommandTimeout = 5
    .Parameters.AddWithValue("@ScanData", Scan_Number)
    .Parameters.Add("@RecordCount", SqlDbType.Int).Value = DBNull.Value
    .Parameters("@RecordCount").Direction = ParameterDirection.Output
End With

Try
    MsgBox(con.State & " - " & con.State.ToString())
    cmd_GetItem.ExecuteNonQuery()
    'snip

【问题讨论】:

【参考方案1】:

我无法帮助某些 API 函数在特殊条件下如何工作,但使用一般方法:

将查询放在一个单独的线程中,并在“你的”超时定义之后检查它是否以成功结束。如果线程仍在运行(代码挂起),则终止线程并重新开始。

类似这样的:

myThread.Start();
if( not (myThread.Join(timeout)) ) //this will block at max timeout
  myThread.Abort(); the thread is blocked!

抱歉,没有 VB sn-p。

【讨论】:

以上是关于WiFi 掉线时未使用 CommandTimeout的主要内容,如果未能解决你的问题,请参考以下文章

360wifi: 手机锁屏360wifi掉线的解决方法

Python wifi掉线重连接

一开空调网络掉线怎么解决

使用超过 3g 时未找到证书路径的信任锚,但在 WiFi 上工作正常

surface pro 4 wifi掉线问题

用空调容易掉线 怎么办?