WiFi下降时不使用CommandTimeout

时间:2015-12-22 16:54:30

标签: vb.net compact-framework sqlconnection sqlcommand sqlclient

在下面的示例中,如果删除了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 个答案:

答案 0 :(得分:0)

我无法帮助解决某些API函数在特殊条件下的工作方式,但采用一般方法:

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

这样的事情:

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

抱歉,但没有VB片段。