2010-08-24 243 views
4

Windows服務具有一個接收數據的開放式插槽(一個單獨的線程)如何關閉阻塞插座

爲響應服務OnShutdown我想發出信號的工作線程關機,但它目前已被阻止在Receive

目前我在Receive上超時檢查是否有掛起請求未決。有沒有更好的方法,而不是等待超時通知工作線程停止接收並通過其關閉邏輯?

+1

最好的方法是使用異步套接字。反正他們的規模好得多。 – 2010-08-24 14:34:57

+0

從某種意義上說它是異步的。當然,我並沒有使用BeginReceive - 但即使我是這樣,我如何讓它停止正在等待數據的接收。 – 2010-08-24 14:51:57

回答

2

致電Socket.Close。這將導致Socket.Receive方法立即釋放異常。

異常是IO.IOException,它有一個SocketException作爲內部異常。內部異常的本地錯誤代碼爲10004.