1

在下面的例子中,CommandTimeout = 5似乎沒有幫助,如果WiFi連接被丟棄。不幸的是,即使在這種情況下,sqlConnection仍然有StateOpen當WiFi下降時,CommandTimeout沒有被使用

真正的問題是暫停似乎是無限的,它只是坐在那裏..掛。我無法讓它迴歸。 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

我不能怎麼有些API函數在特殊條件下工作的幫助,但與一般的方法:

把查詢放在一個單獨的線程,並檢查它是否與後「你的」超時圓滿結束定義。如果線程仍然運行(代碼掛起),則殺死該線程並重新開始。

事情是這樣的:

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

很抱歉,但沒有VB代碼段。

相關問題