System.Net.Sockets.TcpListener.AcceptSocketAsync C# (CSharp) Méthode

AcceptSocketAsync() public méthode

public AcceptSocketAsync ( ) : Task
Résultat Task
        public Task<Socket> AcceptSocketAsync()
        {
            return Task<Socket>.Factory.FromAsync(
                (callback, state) => ((TcpListener)state).BeginAcceptSocket(callback, state),
                asyncResult => ((TcpListener)asyncResult.AsyncState).EndAcceptSocket(asyncResult),
                state: this);
        }

Usage Example

Exemple #1
0
        private static async Task AcceptMany(TcpListener tcpListener, int howMany)
        {
            List<WeakReference<Task>> waitingFor = new List<WeakReference<Task>>();
            for (int i = 1; howMany == 0 || i <= howMany; i++)
            {
                Console.WriteLine("Waiting for {0}", i);
                Stopwatch sw = new Stopwatch(); sw.Start();
                var listener = await tcpListener.AcceptSocketAsync();
                sw.Stop();
                Console.WriteLine("Accepted {0} in {1} milliseconds", i, sw.ElapsedMilliseconds);

                //var workTask = WorkWith(i, listener);

                //if (!workTask.IsCompleted) waitingFor.Add(new WeakReference<Task>(workTask));
            }

            Console.WriteLine("Maximum requests processed. Waiting for them to finish");

            var toWaitFor = waitingFor.Select(x =>
            {
                Task tsk;
                if (!x.TryGetTarget(out tsk))
                {
                    Console.WriteLine("Failed to get task");
                }

                return tsk;
            }).Where(x => x != null && !x.IsCompleted);

            await Task.WhenAll(toWaitFor);
        }
All Usage Examples Of System.Net.Sockets.TcpListener::AcceptSocketAsync