2011-01-05 96 views
1

有沒有辦法讓套接字停止嘗試立即連接?看起來,如果套接字嘗試連接一個dud,則需要一段時間才能在連接上超時。如果用戶單擊試圖連接的按鈕,然後想要關閉,則其他線程將使應用程序保持活動狀態,因爲它在socket.Connect()方法中阻塞了阻塞。立即停止連接嘗試?

我試着從另一個線程調用close。異常發生變化,但超時仍在。不得不等待暫停是令人討厭的。

回答

2

您可以使用異步方法BeginConnectEndConnect一起避免阻塞主線程。就超時而言,您可能會嘗試降低其價值。

+0

@達林。我正在看這個,但我不知道如何停止連接嘗試。在停止連接和建立連接之間是否存在競爭狀態? – uriDium 2011-01-05 09:37:48

+0

@uriDium,你不能*停止連接*。這只是等待將在一個單獨的線程上執行。請記住,在調用EndConnect方法時會引發超時異常,因此請確保正確處理它。 – 2011-01-05 09:39:04

+0

@Darnin。我看到EndConnect被阻止。所以我還得等一等?有沒有辦法擺脫這種等待的事情。 – uriDium 2011-01-05 09:43:00

0

爲什麼不使用異步套接字?這樣,如果你不再需要它,你可以關閉它,忽略隨後回調的任何東西。我期望它是BeginConnect,你需要打電話。