【问题标题】:CommandTimeout not being used when WiFi dropsWiFi 掉线时未使用 CommandTimeout
【发布时间】: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

【问题讨论】:

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


    【解决方案1】:

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

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

    类似这样的:

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

    抱歉,没有 VB sn-p。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多