private void WorkThread(object state) { var sessionManager = new SessionManager(); while (!this.isClosed) { try { var tcpClient = this.tcpListener.AcceptTcpClient(); var session = new Session(sessionManager, tcpClient); sessionManager.AddSession(session); Console.WriteLine("New session #{0} created", session ); } catch (SocketException) { Console.WriteLine("Accept failure"); break; } } sessionManager.RemoveAllSessions(); }
public Session(SessionManager manager, TcpClient tcpClient) { this.manager = manager; this.id = manager.GetNextSessionId(); this.tcpClient = tcpClient; this.networkStream = tcpClient.GetStream(); ThreadPool.QueueUserWorkItem(ReadThread); }