Пример #1
0
        public async void AcceptLoop()
        {
            var tf = new TaskFactory(_acceptLoopToken,
                                     TaskCreationOptions.LongRunning,
                                     TaskContinuationOptions.ExecuteSynchronously,
                                     TaskScheduler.Current);

            await tf.StartNew(async() =>
            {
                try
                {
                    for (;;)
                    {
                        var socketClient =
                            await Server.AcceptAsync().ConfigureAwait(false);

                        var client = new TC()
                        {
                            ClientSocket = socketClient,
                            Server       = this
                        };

                        client.OnCreate();
                        await client.LaunchReceiveLoop();

                        Clients.Add(client);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            }, _acceptLoopToken);
        }
        //
        // Async accept operation
        //
        public async Task <TcpClient> AcceptTcpClientAsync()
        {
            var result = await Server.AcceptAsync().ConfigureAwait(false);

            return(new TcpClient(result));
        }
Пример #3
0
 //
 // Async accept operation
 //
 public Task <TcpClient> AcceptTcpClientAsync() =>
 Server.AcceptAsync().ContinueWith(t => new TcpClient(t.Result));