public void Start() { m_Logger.Log("Starting localhost communication server.", MessageTypeEnum.INFO); IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(LOCALHOST), m_Port); m_Listener = new TcpListener(endPoint); m_Listener.Start(); m_Logger.Log($"Waiting for new connections on port {m_Port}", MessageTypeEnum.INFO); Task task = new Task(() => { while (true) { try { TcpClient client = m_Listener.AcceptTcpClient(); ClientConnectedEventArgs args = new ClientConnectedEventArgs(); args.Client = client; ClientConnected.Invoke(this, args); m_Logger.Log("New connection accepted", MessageTypeEnum.INFO); m_ClientHandler.handleClient(client, m_Controller, m_Logger); m_Logger.Log("QUITING CLIENT", MessageTypeEnum.WARNING); clientDisconnected.Invoke(this, client); } catch (SocketException m_Error) { m_Logger.Log($"Got exception: {m_Error.ToString()}", MessageTypeEnum.INFO); break; } } }); task.Start(); }