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)); }
// // Async accept operation // public Task <TcpClient> AcceptTcpClientAsync() => Server.AcceptAsync().ContinueWith(t => new TcpClient(t.Result));