The TcpListener inherently supports asynchronous processing via the BeginAcceptTcpClient and EndAcceptTcpClient methods.