示例#1
0
        public async void Run()
        {
            try
            {
                _listener.Start();
                Running = true;

                while (Running)
                {
                    Console.WriteLine("\nWaiting for connection...");
                    List <Task> tasks = new List <Task>();
                    if (tasks.Count > 10)
                    {
                        var   array     = tasks.ToArray();
                        int   taskIndex = Task.WaitAny((array));
                        await array[taskIndex];
                        tasks.Remove(array[taskIndex]);
                    }



                    IClient connection = _listener.AcceptTcpClient();
                    Task    clientTask = Task.Run(() => ProcessRequest(connection));
                    tasks.Add(clientTask);
                    Console.WriteLine("Connected!\n");
                }

                Running = false;
                _listener.Stop();
            }
            catch (SocketException ex)
            {
                Console.WriteLine("Connection error occurred: " + ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("There was a problem: " + ex.Message);
            }
        }