在下面的示例中,如果删除了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
答案 0 :(得分:0)
我无法帮助解决某些API函数在特殊条件下的工作方式,但采用一般方法:
将查询放在一个单独的帖子中,并在“你的”之后检查它是否以成功结束。超时定义。如果线程仍在运行(代码挂起),则终止线程并重新开始。
这样的事情:
myThread.Start();
if( not (myThread.Join(timeout)) ) //this will block at max timeout
myThread.Abort(); the thread is blocked!
抱歉,但没有VB片段。