.net – 如何关闭被阻止的套接字

Windows服务有一个打开的套接字接收数据(在一个单独的线程上)

为了响应服务OnShutdown,我想将工作线程发送到关闭状态,但它当前在接收上被阻止.

目前我正在关闭接收以检查是否有待处理的停止请求.有没有更好的方法,而不是等待超时通知工作线程停止接收并通过其关闭逻辑?

最佳答案 调用Socket.Close.它将导致Socket.Receive方法抛出异常立即解除阻塞.

例外是IO.IOException,它将SocketException作为内部异常.内部异常的本机错误代码是10004.

点赞