protected internal override void NetworkStreamAccept() { try { AsyncAcceptStatusObject state = new AsyncAcceptStatusObject(base.Socket); base.Socket.BeginAccept(new AsyncCallback(AcceptCallback), state); WaitForEvent(state.waitEvent, TimeOut); CheckAsyncException(state); base.Socket = state.AcceptedSocket; base.Socket.Blocking = true; } catch (SocketException exception) { throw new SocketError(exception.Message, exception.ErrorCode, exception); } }
private void AcceptCallback(IAsyncResult ar) { AsyncAcceptStatusObject asyncState = (AsyncAcceptStatusObject)ar.AsyncState; try { asyncState.AcceptedSocket = asyncState.socket.EndAccept(ar); } catch (Exception exception) { asyncState.exception = exception; } finally { asyncState.waitEvent.Set(); } }