networkStream.Read блокирует

Я пишу простое приложение, которое будет соединяться с сервером. Однако я хочу также отправить простые команды чата (см.Console.ReadLine ниже). Однако этот сценарий не дойдет доstring Message = Console.ReadLine(); поскольку он заблокирован наbytesRead = clientStream.Read(message, 0, 4096);.

Я хочу продолжить этот сценарий, но если поступают байты, он должен их обработать (как это происходит сейчас), и если нет поступающих байтов, он должен пройти через сценарий и дождаться ввода данных пользователем). Как этого достичь?

        TcpClient tcpClient = (TcpClient)client;
        NetworkStream clientStream = tcpClient.GetStream();

        byte[] message = new byte[4096];
        int bytesRead;

        while (true)
        {
            bytesRead = 0;

            try
            {
                // Blocks until a client sends a message                    
                bytesRead = clientStream.Read(message, 0, 4096);
            }
            catch (Exception)
            {
                // A socket error has occured
                break;
            }

            if (bytesRead == 0)
            {
                // The client has disconnected from the server
                break;
            }

            // Message has successfully been received
            ASCIIEncoding encoder = new ASCIIEncoding();

            // Output message
            Console.WriteLine("To: " + tcpClient.Client.LocalEndPoint);
            Console.WriteLine("From: " + tcpClient.Client.RemoteEndPoint);
            Console.WriteLine(encoder.GetString(message, 0, bytesRead));

            // Return message
            string Message = Console.ReadLine();
            if (Message != null)
            {
                byte[] buffer = encoder.GetBytes(Message);
                clientStream.Write(buffer, 0, buffer.Length);
                clientStream.Flush();
            }

Ответы на вопрос(1)

Ваш ответ на вопрос