public override void Close() { lock (lckObject) { try { BaseSocket.Shutdown(SocketShutdown.Both); } catch { } try { BaseSocket.Dispose(); } catch { } State = ConnectionState.Closed; SocketReceiveArgs.Completed -= socketArgsRecv_Completed; SocketSendArgs.Completed -= socketArgsSend_Completed; ReceivePool.Return(SocketReceiveArgs); SendPool.Return(SocketSendArgs); } }