Пример #1
0
        internal static Task<Socket> AcceptSocketAsync(this TcpListener listener)
        {
            var tcs = new TaskCompletionSource<Socket>();

            listener.BeginAcceptSocket(iasr =>
                {
                    try
                    {
                        tcs.SetResult(listener.EndAcceptSocket(iasr));
                    }
                    catch (Exception e)
                    {
                        tcs.SetException(e);
                    }
                }, null);

            return tcs.Task;
        }
Пример #2
0
 internal static IObservable<Socket> AcceptSocketAsync(this TcpListener listener)
 {
     return new AsyncOperation<Socket>(
         (c, st) => listener.BeginAcceptSocket(c, st),
         iasr => listener.EndAcceptSocket(iasr));
 }
        /// <summary>
        /// Extends BeginAcceptSocket so that when a state object is not needed, null does not need to be passed.
        /// <example>
        /// tcplistener.BeginAcceptSocket(callback);
        /// </example>
        /// </summary>
        public static IAsyncResult BeginAcceptSocket(this TcpListener tcplistener, AsyncCallback callback)
        {
            if(tcplistener == null) throw new ArgumentNullException("tcplistener");

            return tcplistener.BeginAcceptSocket(callback, null);
        }