WiFi 掉线时未使用 CommandTimeout
Posted
技术标签:
【中文标题】WiFi 掉线时未使用 CommandTimeout【英文标题】:CommandTimeout not being used when WiFi drops 【发布时间】:2016-03-29 00:14:17 【问题描述】:在下面的示例中,如果 wifi 连接断开,CommandTimeout = 5
似乎没有帮助。不幸的是,即使在这种情况下,sqlConnection 仍然有 State
或 Open
。
真正的问题是超时似乎是无限的,它只是坐在那里.. 挂起。我不能让它回来。 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的主要内容,如果未能解决你的问题,请参考以下文章