public BeginAccept ( Socket acceptSocket, int receiveSize, AsyncCallback callback, object state ) : IAsyncResult | ||
acceptSocket | Socket | |
receiveSize | int | |
callback | AsyncCallback | |
state | object | |
return | IAsyncResult |
public IAsyncResult BeginAccept(Socket acceptSocket, int receiveSize, AsyncCallback callback, object state)
{
if (NetEventSource.IsEnabled) NetEventSource.Enter(this);
if (CleanedUp)
{
throw new ObjectDisposedException(this.GetType().FullName);
}
// Validate input parameters.
if (receiveSize < 0)
{
throw new ArgumentOutOfRangeException(nameof(receiveSize));
}
// Set up the async result with flowing.
AcceptOverlappedAsyncResult asyncResult = new AcceptOverlappedAsyncResult(this, state, callback);
asyncResult.StartPostingAsyncOp(false);
// Start the accept.
DoBeginAccept(acceptSocket, receiveSize, asyncResult);
// Finish the flow capture, maybe complete here.
asyncResult.FinishPostingAsyncOp(ref Caches.AcceptClosureCache);
if (NetEventSource.IsEnabled) NetEventSource.Exit(this, asyncResult);
return asyncResult;
}
Socket::BeginAccept ( AsyncCallback callback, object state ) : IAsyncResult | |
Socket::BeginAccept ( int receiveSize, AsyncCallback callback, object state ) : IAsyncResult |
public Listener(IPEndPoint ipep) { m_Accepted = new Queue<Socket>(); m_AcceptedSyncRoot = ((ICollection)m_Accepted).SyncRoot; m_Listener = Bind(ipep); if (m_Listener == null) { return; } DisplayListener(); #if NewAsyncSockets m_EventArgs = new SocketAsyncEventArgs(); m_EventArgs.Completed += new EventHandler<SocketAsyncEventArgs>( Accept_Completion ); Accept_Start(); #else m_OnAccept = OnAccept; try { IAsyncResult res = m_Listener.BeginAccept(m_OnAccept, m_Listener); } catch (SocketException ex) { NetState.TraceException(ex); } catch (ObjectDisposedException) { } #endif }